sc/qa/extras/vba-macro-test.cxx                                |    4 
 sc/qa/unit/uicalc/uicalc2.cxx                                  |   10 
 sc/source/ui/Accessibility/AccessibleDocument.cxx              |    2 
 sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx           |   25 +
 sc/source/ui/StatisticsDialogs/SamplingDialog.cxx              |    2 
 sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx |    2 
 sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx |    2 
 sc/source/ui/app/client.cxx                                    |    2 
 sc/source/ui/app/inputhdl.cxx                                  |   10 
 sc/source/ui/app/inputwin.cxx                                  |    6 
 sc/source/ui/condformat/condformatdlg.cxx                      |    4 
 sc/source/ui/condformat/condformateasydlg.cxx                  |    3 
 sc/source/ui/dbgui/consdlg.cxx                                 |    4 
 sc/source/ui/dbgui/filtdlg.cxx                                 |    2 
 sc/source/ui/dbgui/foptmgr.cxx                                 |    4 
 sc/source/ui/dbgui/tpsort.cxx                                  |    8 
 sc/source/ui/dbgui/tpsubt.cxx                                  |    4 
 sc/source/ui/dbgui/validate.cxx                                |    2 
 sc/source/ui/dialogs/SparklineDataRangeDialog.cxx              |    2 
 sc/source/ui/docshell/docsh4.cxx                               |   14 -
 sc/source/ui/docshell/docsh6.cxx                               |    2 
 sc/source/ui/drawfunc/drawsh.cxx                               |    2 
 sc/source/ui/drawfunc/drtxtob.cxx                              |    2 
 sc/source/ui/drawfunc/fuins1.cxx                               |    6 
 sc/source/ui/drawfunc/fuins2.cxx                               |    8 
 sc/source/ui/drawfunc/fupoor.cxx                               |    2 
 sc/source/ui/drawfunc/fusel.cxx                                |    6 
 sc/source/ui/drawfunc/fusel2.cxx                               |    2 
 sc/source/ui/drawfunc/futext3.cxx                              |    2 
 sc/source/ui/formdlg/formula.cxx                               |    4 
 sc/source/ui/inc/olinewin.hxx                                  |    2 
 sc/source/ui/inc/viewdata.hxx                                  |   15 +
 sc/source/ui/miscdlgs/anyrefdg.cxx                             |    4 
 sc/source/ui/miscdlgs/autofmt.cxx                              |    2 
 sc/source/ui/miscdlgs/datafdlg.cxx                             |    2 
 sc/source/ui/miscdlgs/duplicaterecordsdlg.cxx                  |    4 
 sc/source/ui/miscdlgs/inscldlg.cxx                             |    2 
 sc/source/ui/namedlg/namepast.cxx                              |    3 
 sc/source/ui/navipi/navipi.cxx                                 |    2 
 sc/source/ui/optdlg/tpusrlst.cxx                               |    4 
 sc/source/ui/pagedlg/areasdlg.cxx                              |    2 
 sc/source/ui/pagedlg/tphf.cxx                                  |    2 
 sc/source/ui/uitest/uiobject.cxx                               |   14 -
 sc/source/ui/undo/undobase.cxx                                 |    6 
 sc/source/ui/undo/undoblk.cxx                                  |    6 
 sc/source/ui/undo/undoblk2.cxx                                 |    4 
 sc/source/ui/undo/undoblk3.cxx                                 |    2 
 sc/source/ui/undo/undocell.cxx                                 |    2 
 sc/source/ui/undo/undodat.cxx                                  |   40 +--
 sc/source/ui/undo/undotab.cxx                                  |    2 
 sc/source/ui/undo/undoutil.cxx                                 |    2 
 sc/source/ui/unoobj/dispuno.cxx                                |    2 
 sc/source/ui/unoobj/docuno.cxx                                 |   10 
 sc/source/ui/unoobj/viewuno.cxx                                |   24 -
 sc/source/ui/view/cellsh.cxx                                   |   24 -
 sc/source/ui/view/cellsh1.cxx                                  |   50 +--
 sc/source/ui/view/cellsh2.cxx                                  |   20 -
 sc/source/ui/view/cellsh3.cxx                                  |   12 
 sc/source/ui/view/cellsh4.cxx                                  |    4 
 sc/source/ui/view/cliputil.cxx                                 |    2 
 sc/source/ui/view/colrowba.cxx                                 |   10 
 sc/source/ui/view/dbfunc.cxx                                   |   15 -
 sc/source/ui/view/dbfunc2.cxx                                  |    2 
 sc/source/ui/view/dbfunc3.cxx                                  |   56 ++--
 sc/source/ui/view/drawvie3.cxx                                 |    2 
 sc/source/ui/view/drawview.cxx                                 |    6 
 sc/source/ui/view/editsh.cxx                                   |    4 
 sc/source/ui/view/formatsh.cxx                                 |   12 
 sc/source/ui/view/gridwin.cxx                                  |   93 +++----
 sc/source/ui/view/gridwin2.cxx                                 |   20 -
 sc/source/ui/view/gridwin3.cxx                                 |    4 
 sc/source/ui/view/gridwin4.cxx                                 |   34 +-
 sc/source/ui/view/gridwin5.cxx                                 |    6 
 sc/source/ui/view/gridwin_dbgutil.cxx                          |    6 
 sc/source/ui/view/hdrcont.cxx                                  |   10 
 sc/source/ui/view/pivotsh.cxx                                  |    4 
 sc/source/ui/view/prevwsh.cxx                                  |    2 
 sc/source/ui/view/printfun.cxx                                 |    2 
 sc/source/ui/view/select.cxx                                   |   24 -
 sc/source/ui/view/selectionstate.cxx                           |    2 
 sc/source/ui/view/tabcont.cxx                                  |   10 
 sc/source/ui/view/tabview.cxx                                  |   44 +--
 sc/source/ui/view/tabview2.cxx                                 |   30 +-
 sc/source/ui/view/tabview3.cxx                                 |   64 ++--
 sc/source/ui/view/tabview4.cxx                                 |   24 -
 sc/source/ui/view/tabview5.cxx                                 |    8 
 sc/source/ui/view/tabvwsh2.cxx                                 |    2 
 sc/source/ui/view/tabvwsh3.cxx                                 |   24 -
 sc/source/ui/view/tabvwsh4.cxx                                 |   12 
 sc/source/ui/view/tabvwsh5.cxx                                 |   12 
 sc/source/ui/view/tabvwsh8.cxx                                 |    2 
 sc/source/ui/view/tabvwsha.cxx                                 |   18 -
 sc/source/ui/view/tabvwshb.cxx                                 |    8 
 sc/source/ui/view/tabvwshc.cxx                                 |   28 +-
 sc/source/ui/view/tabvwshf.cxx                                 |   28 +-
 sc/source/ui/view/tabvwshg.cxx                                 |    2 
 sc/source/ui/view/viewdata.cxx                                 |  130 
+++++-----
 sc/source/ui/view/viewfun2.cxx                                 |   42 +--
 sc/source/ui/view/viewfun3.cxx                                 |   12 
 sc/source/ui/view/viewfun4.cxx                                 |   16 -
 sc/source/ui/view/viewfun5.cxx                                 |    8 
 sc/source/ui/view/viewfun6.cxx                                 |    8 
 sc/source/ui/view/viewfun7.cxx                                 |   12 
 sc/source/ui/view/viewfunc.cxx                                 |   70 ++---
 104 files changed, 681 insertions(+), 665 deletions(-)

New commits:
commit 040747c870b65ae28e14a4848b9ba880528980cd
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Tue Aug 26 00:26:19 2025 +0200
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Wed Sep 3 10:15:30 2025 +0200

    sc: rename GetTabNo and GetTab to better names
    
    GetTabNo to CurrentTabForData to make it clear what it's usage
    should be and that it is not just a simple getter for a tab, but
    has logic behind it.
    
    GetTab was also renamed to GetTabNumber - it's a direct accessor
    for the current view's tab number.
    
    Document both methods.
    
    Change-Id: Ic855be43b2d38e421e0f9472d182baa20bb37feb
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190448
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Kohei Yoshida <ko...@libreoffice.org>

diff --git a/sc/qa/extras/vba-macro-test.cxx b/sc/qa/extras/vba-macro-test.cxx
index 2b927c1d7e0b..d4d059f68602 100644
--- a/sc/qa/extras/vba-macro-test.cxx
+++ b/sc/qa/extras/vba-macro-test.cxx
@@ -161,7 +161,7 @@ CPPUNIT_TEST_FIXTURE(VBAMacroTest, 
testSheetAndColumnSelectAndHide)
     CPPUNIT_ASSERT(rDoc.ColHidden(3, 2));
     CPPUNIT_ASSERT(rDoc.ColHidden(4, 2));
 
-    CPPUNIT_ASSERT_EQUAL(SCTAB(0), rViewData.GetTabNo());
+    CPPUNIT_ASSERT_EQUAL(SCTAB(0), rViewData.CurrentTabForData());
 
     executeMacro(
         
u"vnd.sun.Star.script:VBAProject.ThisWorkbook.testUnhide?language=Basic&location=document"_ustr);
@@ -178,7 +178,7 @@ CPPUNIT_TEST_FIXTURE(VBAMacroTest, 
testSheetAndColumnSelectAndHide)
     CPPUNIT_ASSERT(!rDoc.ColHidden(3, 2));
     CPPUNIT_ASSERT(!rDoc.ColHidden(4, 2));
 
-    CPPUNIT_ASSERT_EQUAL(SCTAB(0), rViewData.GetTabNo());
+    CPPUNIT_ASSERT_EQUAL(SCTAB(0), rViewData.CurrentTabForData());
 }
 
 CPPUNIT_TEST_FIXTURE(VBAMacroTest, testPrintArea)
diff --git a/sc/qa/unit/uicalc/uicalc2.cxx b/sc/qa/unit/uicalc/uicalc2.cxx
index a8a8a54edab6..7dc23ccafe96 100644
--- a/sc/qa/unit/uicalc/uicalc2.cxx
+++ b/sc/qa/unit/uicalc/uicalc2.cxx
@@ -274,11 +274,11 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf131455)
         lcl_AssertCurrentCursorPosition(*pDocSh, u"N5");
     }
 
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(0), 
getViewShell()->GetViewData().GetTabNo());
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(0), 
getViewShell()->GetViewData().CurrentTabForData());
 
     dispatchCommand(mxComponent, u".uno:JumpToNextTable"_ustr, {});
 
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(1), 
getViewShell()->GetViewData().GetTabNo());
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(1), 
getViewShell()->GetViewData().CurrentTabForData());
     lcl_AssertCurrentCursorPosition(*pDocSh, u"A4");
 
     // Go to row 9
@@ -294,7 +294,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf131455)
 
     dispatchCommand(mxComponent, u".uno:JumpToPrevTable"_ustr, {});
 
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(0), 
getViewShell()->GetViewData().GetTabNo());
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(0), 
getViewShell()->GetViewData().CurrentTabForData());
     lcl_AssertCurrentCursorPosition(*pDocSh, u"N5");
 
     //Cursor can't move forward to the right
@@ -310,11 +310,11 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf124818)
     createScDoc("tdf124818.xls");
     ScDocument* pDoc = getScDoc();
 
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(2), 
getViewShell()->GetViewData().GetTabNo());
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(2), 
getViewShell()->GetViewData().CurrentTabForData());
 
     dispatchCommand(mxComponent, u".uno:JumpToPrevTable"_ustr, {});
 
-    CPPUNIT_ASSERT_EQUAL(sal_Int16(1), 
getViewShell()->GetViewData().GetTabNo());
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(1), 
getViewShell()->GetViewData().CurrentTabForData());
 
     ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
     SdrPage* pPage = pDrawLayer->GetPage(1);
diff --git a/sc/source/ui/Accessibility/AccessibleDocument.cxx 
b/sc/source/ui/Accessibility/AccessibleDocument.cxx
index 5658ee2a27a9..55b89fa4e73d 100644
--- a/sc/source/ui/Accessibility/AccessibleDocument.cxx
+++ b/sc/source/ui/Accessibility/AccessibleDocument.cxx
@@ -2081,7 +2081,7 @@ SCTAB ScAccessibleDocument::getVisibleTable() const
 {
     SCTAB nVisibleTable(0);
     if (mpViewShell)
-        nVisibleTable = mpViewShell->GetViewData().GetTabNo();
+        nVisibleTable = mpViewShell->GetViewData().CurrentTabForData();
     return nVisibleTable;
 }
 
diff --git a/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx 
b/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx
index 0bad15e85566..1a46696e95d2 100644
--- a/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx
+++ b/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx
@@ -538,7 +538,7 @@ void ScAccessibleSpreadsheet::Notify( SfxBroadcaster& rBC, 
const SfxHint& rHint
                 bool bIsMultMark = refScMarkData.IsMultiMarked();
                 bool bNewMarked = refScMarkData.GetTableSelect(aNewCell.Tab()) 
&& ( bIsMark || bIsMultMark );
 //              sal_Bool bNewCellSelected = 
isAccessibleSelected(aNewCell.Row(), aNewCell.Col());
-                sal_uInt16 nTab = rViewData.GetTabNo();
+                sal_uInt16 nTab = rViewData.CurrentTabForData();
                 const ScRange& aMarkRange = refScMarkData.GetMarkArea();
                 aEvent.OldValue.clear();
                 ScDocument* pDoc= GetDocument(mpViewShell);
@@ -959,7 +959,7 @@ rtl::Reference<ScAccessibleCell> 
ScAccessibleSpreadsheet::GetAccessibleCellAt(sa
 {
     if (IsFormulaMode())
     {
-        ScAddress aCellAddress(static_cast<SCCOL>(nColumn), nRow, 
mpViewShell->GetViewData().GetTabNo());
+        ScAddress aCellAddress(static_cast<SCCOL>(nColumn), nRow, 
mpViewShell->GetViewData().CurrentTabForData());
         if ((aCellAddress == m_aFormulaActiveCell) && m_pAccFormulaCell.is())
         {
             return m_pAccFormulaCell;
@@ -1171,10 +1171,11 @@ void SAL_CALL 
ScAccessibleSpreadsheet::selectAllAccessibleChildren(  )
     {
         ScDocument* pDoc = GetDocument(mpViewShell);
         ScViewData& rViewData = mpViewShell->GetViewData();
-        mpViewShell->InitRefMode( 0, 0, rViewData.GetTabNo(), SC_REFTYPE_REF );
-        rViewData.SetRefStart(0, 0, rViewData.GetTabNo());
-        rViewData.SetRefEnd(pDoc->MaxCol(), pDoc->MaxRow(), 
rViewData.GetTabNo());
-        mpViewShell->UpdateRef(pDoc->MaxCol(), pDoc->MaxRow(), 
rViewData.GetTabNo());
+        auto nCurrentTab = rViewData.CurrentTabForData();
+        mpViewShell->InitRefMode( 0, 0, nCurrentTab, SC_REFTYPE_REF );
+        rViewData.SetRefStart(0, 0, nCurrentTab);
+        rViewData.SetRefEnd(pDoc->MaxCol(), pDoc->MaxRow(), nCurrentTab);
+        mpViewShell->UpdateRef(pDoc->MaxCol(), pDoc->MaxRow(), nCurrentTab);
     }
     else
         mpViewShell->SelectAll();
@@ -1261,7 +1262,7 @@ void SAL_CALL 
ScAccessibleSpreadsheet::deselectAccessibleChild( sal_Int64 nChild
     if (IsFormulaMode())
     {
         if(IsScAddrFormulaSel(
-            ScAddress(static_cast<SCCOL>(nCol), 
nRow,mpViewShell->GetViewData().GetTabNo()))
+            ScAddress(static_cast<SCCOL>(nCol), 
nRow,mpViewShell->GetViewData().CurrentTabForData()))
             )
         {
             SelectCell(nRow, nCol, true);
@@ -1284,8 +1285,8 @@ void ScAccessibleSpreadsheet::SelectCell(sal_Int32 nRow, 
sal_Int32 nCol, bool bD
         {
             ScViewData& rViewData = mpViewShell->GetViewData();
 
-            mpViewShell->InitRefMode( static_cast<SCCOL>(nCol), nRow, 
rViewData.GetTabNo(), SC_REFTYPE_REF );
-            mpViewShell->UpdateRef(static_cast<SCCOL>(nCol), nRow, 
rViewData.GetTabNo());
+            mpViewShell->InitRefMode( static_cast<SCCOL>(nCol), nRow, 
rViewData.CurrentTabForData(), SC_REFTYPE_REF );
+            mpViewShell->UpdateRef(static_cast<SCCOL>(nCol), nRow, 
rViewData.CurrentTabForData());
         }
         return ;
     }
@@ -1664,7 +1665,7 @@ bool ScAccessibleSpreadsheet::IsScAddrFormulaSel(const 
ScAddress &addr) const
 {
     return addr.Col() >= m_nMinX && addr.Col() <= m_nMaxX &&
         addr.Row() >= m_nMinY && addr.Row() <= m_nMaxY &&
-        addr.Tab() == mpViewShell->GetViewData().GetTabNo();
+        addr.Tab() == mpViewShell->GetViewData().CurrentTabForData();
 }
 
 bool ScAccessibleSpreadsheet::CheckChildIndex(sal_Int64 nIndex) const
@@ -1684,7 +1685,7 @@ ScAddress 
ScAccessibleSpreadsheet::GetChildIndexAddress(sal_Int64 nIndex) const
     return ScAddress(
         static_cast<SCCOL>((nIndex - nIndex % nRowAll) / nRowAll +  + m_nMinX),
         nIndex % nRowAll + m_nMinY,
-        mpViewShell->GetViewData().GetTabNo()
+        mpViewShell->GetViewData().CurrentTabForData()
         );
 }
 
@@ -1724,7 +1725,7 @@ bool 
ScAccessibleSpreadsheet::GetFormulaCurrentFocusCell(ScAddress &addr)
     ScDocument* pDoc = GetDocument(mpViewShell);
     if( /* Always true: nRefX >= 0 && */ nRefX <= pDoc->MaxCol() && nRefY >= 0 
&& nRefY <= pDoc->MaxRow())
     {
-        addr = ScAddress(nRefX,nRefY,rViewData.GetTabNo());
+        addr = ScAddress(nRefX, nRefY, rViewData.CurrentTabForData());
         return true;
     }
     return false;
diff --git a/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx 
b/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx
index c6a807ddf3f8..4f45dcc513d1 100644
--- a/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx
@@ -29,7 +29,7 @@ ScSamplingDialog::ScSamplingDialog(SfxBindings* pSfxBindings, 
SfxChildWindow* pC
     , mInputRange(ScAddress::INITIALIZE_INVALID)
     , mAddressDetails(mDocument.GetAddressConvention(), 0, 0)
     , mOutputAddress(ScAddress::INITIALIZE_INVALID)
-    , mCurrentAddress(rViewData.GetCurX(), rViewData.GetCurY(), 
rViewData.GetTabNo())
+    , mCurrentAddress(rViewData.GetCurX(), rViewData.GetCurY(), 
rViewData.CurrentTabForData())
     , mnLastSampleSizeValue(1)
     , mnLastPeriodValue(1)
     , mDialogLostFocus(false)
diff --git a/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx 
b/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx
index cff235681f1e..3af68a8b3e40 100644
--- a/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx
@@ -67,7 +67,7 @@ ScStatisticsInputOutputDialog::ScStatisticsInputOutputDialog(
     , mxButtonOk(m_xBuilder->weld_button(u"ok"_ustr))
     , mxButtonCancel(m_xBuilder->weld_button(u"cancel"_ustr))
     , mpActiveEdit(nullptr)
-    , mCurrentAddress(rViewData.GetCurX(), rViewData.GetCurY(), 
rViewData.GetTabNo())
+    , mCurrentAddress(rViewData.GetCurX(), rViewData.GetCurY(), 
rViewData.CurrentTabForData())
     , mDialogLostFocus(false)
 {
     mxInputRangeEdit->SetReferences(this, mxInputRangeLabel.get());
diff --git a/sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx 
b/sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx
index c0fcbc751dbc..eae473873be6 100644
--- a/sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx
@@ -43,7 +43,7 @@ ScStatisticsTwoVariableDialog::ScStatisticsTwoVariableDialog(
     , 
mxGroupByColumnsRadio(m_xBuilder->weld_radio_button(u"groupedby-columns-radio"_ustr))
     , 
mxGroupByRowsRadio(m_xBuilder->weld_radio_button(u"groupedby-rows-radio"_ustr))
     , mpActiveEdit(nullptr)
-    , mCurrentAddress(rViewData.GetCurX(), rViewData.GetCurY(), 
rViewData.GetTabNo() )
+    , mCurrentAddress(rViewData.GetCurX(), rViewData.GetCurY(), 
rViewData.CurrentTabForData() )
     , mDialogLostFocus(false)
 {
     mxVariable1RangeEdit->SetReferences(this, mxVariable1RangeLabel.get());
diff --git a/sc/source/ui/app/client.cxx b/sc/source/ui/app/client.cxx
index 5c44bc077e83..cbb00c3c9ddd 100644
--- a/sc/source/ui/app/client.cxx
+++ b/sc/source/ui/app/client.cxx
@@ -93,7 +93,7 @@ void ScClient::RequestNewObjectArea( tools::Rectangle& 
aLogicRect )
             aLogicRect.SetPos( aOldRect.TopLeft() );
     }
 
-    sal_uInt16 nTab = pViewSh->GetViewData().GetTabNo();
+    sal_uInt16 nTab = pViewSh->GetViewData().CurrentTabForData();
     SdrPage* pPage = 
pModel->GetPage(static_cast<sal_uInt16>(static_cast<sal_Int16>(nTab)));
     if ( !(pPage && aLogicRect != aOldRect) )
         return;
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index fc084ed0ef43..b318aba15235 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -442,7 +442,7 @@ handle_r1c1:
             {
                 //  Set tables if not specified
                 if ( (nFlags & ScRefFlags::TAB_3D) == ScRefFlags::ZERO)
-                    aRange.aStart.SetTab( 
pActiveViewSh->GetViewData().GetTabNo() );
+                    aRange.aStart.SetTab( 
pActiveViewSh->GetViewData().CurrentTabForData() );
                 if ( (nFlags & ScRefFlags::TAB2_3D) == ScRefFlags::ZERO)
                     aRange.aEnd.SetTab( aRange.aStart.Tab() );
 
@@ -571,7 +571,7 @@ void ScInputHandler::UpdateLokReferenceMarks()
         tools::Long nY2 = rViewData.GetRefEndY();
         tools::Long nTab = rViewData.GetRefStartZ();
 
-        if (rViewData.GetRefEndZ() == rViewData.GetTabNo())
+        if (rViewData.GetRefEndZ() == rViewData.CurrentTabForData())
             nTab = rViewData.GetRefEndZ();
 
         PutInOrder(nX1, nX2);
@@ -989,7 +989,7 @@ void ScInputHandler::UpdateSpellSettings( bool 
bFromStartTab )
         ScDocument& rDoc = rViewData.GetDocument();
         rDoc.ApplyAsianEditSettings( *mpEditEngine );
         mpEditEngine->SetDefaultHorizontalTextDirection(
-            rDoc.GetEditTextDirection( rViewData.GetTabNo() ) );
+            rDoc.GetEditTextDirection( rViewData.CurrentTabForData() ) );
         mpEditEngine->SetFirstWordCapitalization( false );
     }
 
@@ -2841,7 +2841,7 @@ void ScInputHandler::DataChanged( bool bFromTopNotify, 
bool bSetModified )
         }
         if (!bNeedGrow)
         {
-            bNeedGrow = rViewData.GetDocument().IsLayoutRTL( 
rViewData.GetTabNo() );
+            bNeedGrow = rViewData.GetDocument().IsLayoutRTL( 
rViewData.CurrentTabForData() );
         }
         if (bNeedGrow)
         {
@@ -3707,7 +3707,7 @@ void ScInputHandler::SetReference( const ScRange& rRef, 
const ScDocument& rDoc )
             aRefStr = rRef.Format(rDoc, ScRefFlags::VALID, aAddrDetails);
     }
     bool bLOKShowSelect = true;
-    if(comphelper::LibreOfficeKit::isActive() && 
pRefViewSh->GetViewData().GetRefTabNo() != pRefViewSh->GetViewData().GetTabNo())
+    if(comphelper::LibreOfficeKit::isActive() && 
pRefViewSh->GetViewData().GetRefTabNo() != 
pRefViewSh->GetViewData().CurrentTabForData())
         bLOKShowSelect = false;
 
     if (pTableView || pTopView)
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index 8c21e56c0da1..8049e7c356ab 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -2456,7 +2456,7 @@ static ScNameInputType lcl_GetInputType( const OUString& 
rText )
     {
         ScViewData& rViewData = pViewSh->GetViewData();
         ScDocument& rDoc = rViewData.GetDocument();
-        SCTAB nTab = rViewData.GetTabNo();
+        SCTAB nTab = rViewData.CurrentTabForData();
         ScAddress::Details aDetails( rDoc.GetAddressConvention());
 
         // test in same order as in SID_CURRENTCELL execute
@@ -2618,7 +2618,7 @@ void ScPosWnd::DoEnter()
                             (rViewData.GetSimpleArea( aSelection ) == 
SC_MARK_SIMPLE) )
                     {
                         ScRangeName aNewRanges( *pNames );
-                        ScAddress aCursor( rViewData.GetCurX(), 
rViewData.GetCurY(), rViewData.GetTabNo() );
+                        ScAddress aCursor( rViewData.GetCurX(), 
rViewData.GetCurY(), rViewData.CurrentTabForData() );
                         OUString aContent(aSelection.Format(rDoc, 
ScRefFlags::RANGE_ABS_3D, rDoc.GetAddressConvention()));
                         ScRangeData* pNew = new ScRangeData( rDoc, aText, 
aContent, aCursor );
                         if ( aNewRanges.insert(pNew) )
@@ -2641,7 +2641,7 @@ void ScPosWnd::DoEnter()
                     {
                         // Note that SID_CURRENTCELL always expects address to
                         // be in Calc A1 format.  Convert the text.
-                        ScRange aRange(0,0, rViewData.GetTabNo());
+                        ScRange aRange(0,0, rViewData.CurrentTabForData());
                         aRange.ParseAny(aText, rDoc, 
rDoc.GetAddressConvention());
                         aText = aRange.Format(rDoc, ScRefFlags::RANGE_ABS_3D, 
::formula::FormulaGrammar::CONV_OOO);
                     }
diff --git a/sc/source/ui/condformat/condformatdlg.cxx 
b/sc/source/ui/condformat/condformatdlg.cxx
index 291ffeef0a36..6ba6e999682f 100644
--- a/sc/source/ui/condformat/condformatdlg.cxx
+++ b/sc/source/ui/condformat/condformatdlg.cxx
@@ -455,7 +455,7 @@ ScCondFormatDlg::ScCondFormatDlg(SfxBindings* pB, 
SfxChildWindow* pCW,
     else if (!mpDlgData->IsManaged())
     {
         ScDocument& rDoc = mpViewData->GetDocument();
-        pFormat = rDoc.GetCondFormList(mpViewData->GetTabNo())->GetFormat ( 
mnKey );
+        pFormat = 
rDoc.GetCondFormList(mpViewData->CurrentTabForData())->GetFormat ( mnKey );
     }
 
     ScRangeList aRange;
@@ -469,7 +469,7 @@ ScCondFormatDlg::ScCondFormatDlg(SfxBindings* pB, 
SfxChildWindow* pCW,
         mpViewData->GetMarkData().FillRangeListWithMarks(&aRange, false);
         if(aRange.empty())
         {
-            ScAddress aPos(mpViewData->GetCurX(), mpViewData->GetCurY(), 
mpViewData->GetTabNo());
+            ScAddress aPos(mpViewData->GetCurX(), mpViewData->GetCurY(), 
mpViewData->CurrentTabForData());
             aRange.push_back(ScRange(aPos));
         }
         mnKey = 0;
diff --git a/sc/source/ui/condformat/condformateasydlg.cxx 
b/sc/source/ui/condformat/condformateasydlg.cxx
index 71ae8745df53..c56b04de1461 100644
--- a/sc/source/ui/condformat/condformateasydlg.cxx
+++ b/sc/source/ui/condformat/condformateasydlg.cxx
@@ -182,7 +182,8 @@ 
ConditionalFormatEasyDialog::ConditionalFormatEasyDialog(SfxBindings* pBindings,
     mpViewData->GetMarkData().FillRangeListWithMarks(&aRange, false);
     if (aRange.empty())
     {
-        ScAddress aPosition(mpViewData->GetCurX(), mpViewData->GetCurY(), 
mpViewData->GetTabNo());
+        ScAddress aPosition(mpViewData->GetCurX(), mpViewData->GetCurY(),
+                            mpViewData->CurrentTabForData());
         aRange.push_back(ScRange(aPosition));
     }
     maPosition = aRange.GetTopLeftCorner();
diff --git a/sc/source/ui/dbgui/consdlg.cxx b/sc/source/ui/dbgui/consdlg.cxx
index 22911ed16f6f..2c1c7f153e65 100644
--- a/sc/source/ui/dbgui/consdlg.cxx
+++ b/sc/source/ui/dbgui/consdlg.cxx
@@ -285,7 +285,7 @@ bool ScConsolidateDlg::VerifyEdit( formula::RefEdit* pEd )
     if (pEd != m_xEdDataArea.get() && pEd != m_xEdDestArea.get())
         return false;
 
-    SCTAB    nTab    = rViewData.GetTabNo();
+    SCTAB nTab = rViewData.CurrentTabForData();
     bool bEditOk = false;
     OUString theCompleteStr;
     const formula::FormulaGrammar::AddressConvention eConv = 
rDoc.GetAddressConvention();
@@ -332,7 +332,7 @@ IMPL_LINK_NOARG(ScConsolidateDlg, OkHdl, weld::Button&, 
void)
     if ( nDataAreaCount > 0 )
     {
         ScRefAddress aDestAddress;
-        SCTAB       nTab = rViewData.GetTabNo();
+        SCTAB nTab = rViewData.CurrentTabForData();
         OUString    aDestPosStr( m_xEdDestArea->GetText() );
         const formula::FormulaGrammar::AddressConvention eConv = 
rDoc.GetAddressConvention();
 
diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx
index 317f7f3a9165..072459641687 100644
--- a/sc/source/ui/dbgui/filtdlg.cxx
+++ b/sc/source/ui/dbgui/filtdlg.cxx
@@ -208,7 +208,7 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet )
 
     pViewData   = rQueryItem.GetViewData();
     pDoc        = pViewData ? &pViewData->GetDocument() : nullptr;
-    nSrcTab     = pViewData ? pViewData->GetTabNo() : static_cast<SCTAB>(0);
+    nSrcTab     = pViewData ? pViewData->CurrentTabForData() : 
static_cast<SCTAB>(0);
 
     // for easier access:
     maFieldLbArr.reserve(QUERY_ENTRY_COUNT);
diff --git a/sc/source/ui/dbgui/foptmgr.cxx b/sc/source/ui/dbgui/foptmgr.cxx
index decaa622ba63..12a7f417d9f6 100644
--- a/sc/source/ui/dbgui/foptmgr.cxx
+++ b/sc/source/ui/dbgui/foptmgr.cxx
@@ -85,10 +85,10 @@ void ScFilterOptionsMgr::Init()
         OUString theAreaStr;
         ScRange         theCurArea ( ScAddress( rQueryData.nCol1,
                                                 rQueryData.nRow1,
-                                                pViewData->GetTabNo() ),
+                                                pViewData->CurrentTabForData() 
),
                                      ScAddress( rQueryData.nCol2,
                                                 rQueryData.nRow2,
-                                                pViewData->GetTabNo() ) );
+                                                pViewData->CurrentTabForData() 
) );
         ScDBCollection* pDBColl     = pDoc->GetDBCollection();
         OUString theDbArea;
         OUString   theDbName(STR_DB_LOCAL_NONAME);
diff --git a/sc/source/ui/dbgui/tpsort.cxx b/sc/source/ui/dbgui/tpsort.cxx
index 91a7a25d3630..00a2749fd83d 100644
--- a/sc/source/ui/dbgui/tpsort.cxx
+++ b/sc/source/ui/dbgui/tpsort.cxx
@@ -120,7 +120,7 @@ void ScTabPageSortFields::Init()
     if ( pDoc )
     {
         ScDBCollection* pDBColl = pDoc->GetDBCollection();
-        const SCTAB     nCurTab = pViewData->GetTabNo();
+        const SCTAB     nCurTab = pViewData->CurrentTabForData();
         if ( pDBColl )
         {
             ScDBData* pDBData
@@ -320,7 +320,7 @@ void ScTabPageSortFields::FillFieldLists( sal_uInt16 
nStartField )
 
     SCCOL   nFirstSortCol   = aSortData.nCol1;
     SCROW   nFirstSortRow   = aSortData.nRow1;
-    SCTAB   nTab        = pViewData->GetTabNo();
+    SCTAB   nTab        = pViewData->CurrentTabForData();
     sal_uInt16  i           = 1;
     nFieldArr.clear();
     nFieldArr.push_back(0);
@@ -608,7 +608,7 @@ void ScTabPageSortOptions::Reset( const SfxItemSet* /* 
rArgSet */ )
 
     if ( pDoc && !aSortData.bInplace )
     {
-        ScRefFlags nFormat = (aSortData.nDestTab != pViewData->GetTabNo())
+        ScRefFlags nFormat = (aSortData.nDestTab != 
pViewData->CurrentTabForData())
                             ? ScRefFlags::RANGE_ABS_3D
                             : ScRefFlags::RANGE_ABS;
 
@@ -718,7 +718,7 @@ DeactivateRC ScTabPageSortOptions::DeactivatePage( 
SfxItemSet* pSetP )
         {
             //  visible table is default for input without table
             //  must be changed to GetRefTabNo when sorting has RefInput!
-            thePos.SetTab( pViewData->GetTabNo() );
+            thePos.SetTab( pViewData->CurrentTabForData() );
         }
 
         ScRefFlags nResult = thePos.Parse( thePosStr, *pDoc, 
pDoc->GetAddressConvention() );
diff --git a/sc/source/ui/dbgui/tpsubt.cxx b/sc/source/ui/dbgui/tpsubt.cxx
index f911292c08f7..b1978ec3a50b 100644
--- a/sc/source/ui/dbgui/tpsubt.cxx
+++ b/sc/source/ui/dbgui/tpsubt.cxx
@@ -245,7 +245,7 @@ void ScTpSubTotalGroup::FillListBoxes()
 
     SCCOL   nFirstCol   = rSubTotalData.nCol1;
     SCROW   nFirstRow   = rSubTotalData.nRow1;
-    SCTAB   nTab        = pViewData->GetTabNo();
+    SCTAB   nTab        = pViewData->CurrentTabForData();
     SCCOL   nMaxCol     = rSubTotalData.nCol2;
     SCCOL   col;
     OUString  aFieldName;
@@ -525,7 +525,7 @@ bool ScTpSubTotalOptions::FillItemSet( SfxItemSet* rArgSet )
     theSubTotalData.bDoSort         = m_xBtnSort->get_active();
 
     theSubTotalData.bSummaryBelow   = m_xBtnSummary->get_active();
-    pDoc->SetTotalsRowBelow(pViewData->GetTabNo(), 
theSubTotalData.bSummaryBelow);
+    pDoc->SetTotalsRowBelow(pViewData->CurrentTabForData(), 
theSubTotalData.bSummaryBelow);
 
     theSubTotalData.bAscending      = m_xBtnAscending->get_active();
     theSubTotalData.bUserDef        = m_xBtnUserDef->get_active();
diff --git a/sc/source/ui/dbgui/validate.cxx b/sc/source/ui/dbgui/validate.cxx
index bacbe29e3af3..9567a791d512 100644
--- a/sc/source/ui/dbgui/validate.cxx
+++ b/sc/source/ui/dbgui/validate.cxx
@@ -200,7 +200,7 @@ void ScTPValidationValue::RefInputDonePostHdl()
 
         pOldParent->hide();
         ScViewData& rViewData = 
pValidationDlg->GetTabViewShell()->GetViewData();
-        SCTAB nCurTab = rViewData.GetTabNo();
+        SCTAB nCurTab = rViewData.CurrentTabForData();
         SCTAB nRefTab = rViewData.GetRefTabNo();
         // If RefInput switched to a different sheet from the data sheet,
         // switch back: fdo#53920
diff --git a/sc/source/ui/dialogs/SparklineDataRangeDialog.cxx 
b/sc/source/ui/dialogs/SparklineDataRangeDialog.cxx
index 607f5624072b..dedaf0faa742 100644
--- a/sc/source/ui/dialogs/SparklineDataRangeDialog.cxx
+++ b/sc/source/ui/dialogs/SparklineDataRangeDialog.cxx
@@ -194,7 +194,7 @@ void SparklineDataRangeDialog::perform()
     ScRangeList aList{ maDataRange };
 
     auto& rDocFunc = mrViewData.GetDocShell()->GetDocFunc();
-    rDocFunc.ChangeSparkline(mpSparkline, mrViewData.GetTabNo(), aList);
+    rDocFunc.ChangeSparkline(mpSparkline, mrViewData.CurrentTabForData(), 
aList);
 }
 
 } // end sc
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 02391ac649a9..eff11634d595 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -608,7 +608,7 @@ void ScDocShell::Execute( SfxRequest& rReq )
                     break;
 
                 ScDocument& rDoc = GetDocument();
-                const SCTAB nTab = pViewData->GetTabNo();
+                const SCTAB nTab = pViewData->CurrentTabForData();
 
                 // obtain the page-style’s ItemSet
                 OUString aStyleName = rDoc.GetPageStyle(nTab);
@@ -675,7 +675,7 @@ void ScDocShell::Execute( SfxRequest& rReq )
                 if (!pViewData)
                     break;
                 ScDocument& rDoc = GetDocument();
-                const SCTAB nTab = pViewData->GetTabNo();
+                const SCTAB nTab = pViewData->CurrentTabForData();
                 OUString aStyleName = rDoc.GetPageStyle(nTab);
                 ScStyleSheetPool* pStylePool = rDoc.GetStyleSheetPool();
                 SfxStyleSheetBase* pStyleSheet = pStylePool->Find(aStyleName, 
SfxStyleFamily::Page);
@@ -743,7 +743,7 @@ void ScDocShell::Execute( SfxRequest& rReq )
                 }
 
                 ScDocument& rDoc = GetDocument();
-                const SCTAB nTab = pViewData->GetTabNo();
+                const SCTAB nTab = pViewData->CurrentTabForData();
                 OUString aStyleName = rDoc.GetPageStyle(nTab);
                 ScStyleSheetPool* pStylePool = rDoc.GetStyleSheetPool();
                 SfxStyleSheetBase* pStyleSheet = pStylePool->Find(aStyleName, 
SfxStyleFamily::Page);
@@ -1048,7 +1048,7 @@ void ScDocShell::Execute( SfxRequest& rReq )
                             if ( pSh )
                             {
                                 //! omit SetTabNo in DeleteTable?
-                                SCTAB nDispTab = pSh->GetViewData().GetTabNo();
+                                SCTAB nDispTab = 
pSh->GetViewData().CurrentTabForData();
                                 pSh->DeleteTable( nTab );
                                 pSh->SetTabNo(nDispTab);
                                 rReq.Done();
@@ -2468,7 +2468,7 @@ void ScDocShell::GetState( SfxItemSet &rSet )
                     if (pViewData)
                     {
                         ScDocument& rDoc = GetDocument();
-                        const SCTAB nTab = pViewData->GetTabNo();
+                        const SCTAB nTab = pViewData->CurrentTabForData();
 
                         OUString aStyleName = rDoc.GetPageStyle(nTab);
                         ScStyleSheetPool* pStylePool = 
rDoc.GetStyleSheetPool();
@@ -2550,7 +2550,7 @@ void ScDocShell::GetState( SfxItemSet &rSet )
                         ScMarkData aMark = 
pViewShell->GetViewData().GetMarkData();
                         SCCOL  nCol = pViewShell->GetViewData().GetCurX();
                         SCROW  nRow = pViewShell->GetViewData().GetCurY();
-                        SCTAB  nTab = pViewShell->GetViewData().GetTabNo();
+                        SCTAB  nTab = 
pViewShell->GetViewData().CurrentTabForData();
 
                         aMark.SetMarkArea(ScRange(nCol, nRow, nTab));
                         const ScPatternAttr* pSelAttrs = 
GetDocument().GetSelectionPattern(aMark);
@@ -3007,7 +3007,7 @@ SCTAB ScDocShell::GetCurTab()
 
     ScViewData* pViewData = GetViewData();
 
-    return pViewData ? pViewData->GetTabNo() : static_cast<SCTAB>(0);
+    return pViewData ? pViewData->CurrentTabForData() : static_cast<SCTAB>(0);
 }
 
 ScTabViewShell* ScDocShell::GetBestViewShell( bool bOnlyVisible )
diff --git a/sc/source/ui/docshell/docsh6.cxx b/sc/source/ui/docshell/docsh6.cxx
index 83538aeaab0d..41509cfdb8e0 100644
--- a/sc/source/ui/docshell/docsh6.cxx
+++ b/sc/source/ui/docshell/docsh6.cxx
@@ -165,7 +165,7 @@ void ScDocShell::UpdateOle(const ScViewData& rViewData, 
bool bSnapSize)
         aNewArea = m_pDocument->GetEmbeddedRect();
     else
     {
-        SCTAB nTab = rViewData.GetTabNo();
+        SCTAB nTab = rViewData.CurrentTabForData();
         if ( nTab != m_pDocument->GetVisibleTab() )
             m_pDocument->SetVisibleTab( nTab );
 
diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx
index e45717a31f74..80f6a1d4c02f 100644
--- a/sc/source/ui/drawfunc/drawsh.cxx
+++ b/sc/source/ui/drawfunc/drawsh.cxx
@@ -184,7 +184,7 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq )
                 const sal_uLong newPosX = 
convertTwipToMm100(newPosXTwips->GetValue());
                 const sal_uLong newPosY = 
convertTwipToMm100(newPosYTwips->GetValue());
 
-                bool bNegateX = comphelper::LibreOfficeKit::isActive() && 
rViewData.GetDocument().IsLayoutRTL(rViewData.GetTabNo());
+                bool bNegateX = comphelper::LibreOfficeKit::isActive() && 
rViewData.GetDocument().IsLayoutRTL(rViewData.CurrentTabForData());
                 pView->MoveShapeHandle(handleNum, Point(bNegateX ? 
-static_cast<tools::Long>(newPosX) : newPosX, newPosY), OrdNum ? 
OrdNum->GetValue() : -1);
             }
         }
diff --git a/sc/source/ui/drawfunc/drtxtob.cxx 
b/sc/source/ui/drawfunc/drtxtob.cxx
index 33b97a26e0b0..f4e201d56d46 100644
--- a/sc/source/ui/drawfunc/drtxtob.cxx
+++ b/sc/source/ui/drawfunc/drtxtob.cxx
@@ -1208,7 +1208,7 @@ void ScDrawTextObjectBar::GetAttrState( SfxItemSet& 
rDestSet )
         if ( eAttrDir == SvxFrameDirection::Environment )
         {
             //  get "environment" direction from page style
-            if ( mrViewData.GetDocument().GetEditTextDirection( 
mrViewData.GetTabNo() ) == EEHorizontalTextDirection::R2L )
+            if ( mrViewData.GetDocument().GetEditTextDirection( 
mrViewData.CurrentTabForData() ) == EEHorizontalTextDirection::R2L )
                 eAttrDir = SvxFrameDirection::Horizontal_RL_TB;
             else
                 eAttrDir = SvxFrameDirection::Horizontal_LR_TB;
diff --git a/sc/source/ui/drawfunc/fuins1.cxx b/sc/source/ui/drawfunc/fuins1.cxx
index 728865a43f4d..d590b37d5259 100644
--- a/sc/source/ui/drawfunc/fuins1.cxx
+++ b/sc/source/ui/drawfunc/fuins1.cxx
@@ -180,7 +180,7 @@ static void lcl_InsertGraphic( const Graphic& rGraphic,
     Point aInsertPos = rViewSh.GetInsertPos();
 
     ScViewData& rData = rViewSh.GetViewData();
-    if ( rData.GetDocument().IsNegativePage( rData.GetTabNo() ) )
+    if ( rData.GetDocument().IsNegativePage( rData.CurrentTabForData() ) )
         aInsertPos.AdjustX( -(aLogicSize.Width()) );       // move position to 
left edge
 
     ScLimitSizeOnDrawPage( aLogicSize, aInsertPos, pPage->GetSize() );
@@ -201,7 +201,7 @@ static void lcl_InsertGraphic( const Graphic& rGraphic,
     pObj->SetName(aName);
 
     if (aAnchorType == SCA_CELL || aAnchorType == SCA_CELL_RESIZE)
-        ScDrawLayer::SetCellAnchoredFromPosition(*pObj, rData.GetDocument(), 
rData.GetTabNo(),
+        ScDrawLayer::SetCellAnchoredFromPosition(*pObj, rData.GetDocument(), 
rData.CurrentTabForData(),
                                                  aAnchorType == 
SCA_CELL_RESIZE);
 
     //  don't select if from (dispatch) API, to allow subsequent cell 
operations
@@ -239,7 +239,7 @@ static void lcl_InsertMedia( const OUString& rMediaURL, 
bool bApi,
 
     ScLimitSizeOnDrawPage( aSize, aInsertPos, pPage->GetSize() );
 
-    if( rData.GetDocument().IsNegativePage( rData.GetTabNo() ) )
+    if( rData.GetDocument().IsNegativePage( rData.CurrentTabForData() ) )
         aInsertPos.AdjustX( -(aSize.Width()) );
 
     OUString realURL;
diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx
index cc373117bfa2..4c531f68d3f4 100644
--- a/sc/source/ui/drawfunc/fuins2.cxx
+++ b/sc/source/ui/drawfunc/fuins2.cxx
@@ -350,7 +350,7 @@ FuInsertOLE::FuInsertOLE(ScTabViewShell& rViewSh, 
vcl::Window* pWin, ScDrawView*
             ScViewData& rData = rViewSh.GetViewData();
 
             Point aPnt = rViewSh.GetInsertPos();
-            if ( rData.GetDocument().IsNegativePage( rData.GetTabNo() ) )
+            if ( rData.GetDocument().IsNegativePage( rData.CurrentTabForData() 
) )
                 aPnt.AdjustX( -(aSize.Width()) );      // move position to 
left edge
             tools::Rectangle aRect (aPnt, aSize);
             rtl::Reference<SdrOle2Obj> pObj = new SdrOle2Obj(
@@ -441,7 +441,7 @@ FuInsertChart::FuInsertChart(ScTabViewShell& rViewSh, 
vcl::Window* pWin, ScDrawV
         ScDocument& rDocument = rViewSh.GetViewData().GetDocument();
         ScDPObject* pObject = 
rDocument.GetDPAtCursor(rViewSh.GetViewData().GetCurX(),
                                                       
rViewSh.GetViewData().GetCurY(),
-                                                      
rViewSh.GetViewData().GetTabNo());
+                                                      
rViewSh.GetViewData().CurrentTabForData());
         if (pObject)
         {
             aRangeString = pObject->GetName();
@@ -545,7 +545,7 @@ FuInsertChart::FuInsertChart(ScTabViewShell& rViewSh, 
vcl::Window* pWin, ScDrawV
                 if ( pBoolItem->GetValue() )
                     nToTable = static_cast<sal_uInt16>(rScDoc.GetTableCount());
                 else
-                    nToTable = static_cast<sal_uInt16>(rData.GetTabNo());
+                    nToTable = 
static_cast<sal_uInt16>(rData.CurrentTabForData());
             }
         }
         else
@@ -580,7 +580,7 @@ FuInsertChart::FuInsertChart(ScTabViewShell& rViewSh, 
vcl::Window* pWin, ScDrawV
                 OSL_FAIL( "Could not create new table :-/" );
             }
         }
-        else if ( nToTable != rData.GetTabNo() )
+        else if ( nToTable != rData.CurrentTabForData() )
         {
             rViewSh.SetTabNo( nToTable, true );
         }
diff --git a/sc/source/ui/drawfunc/fupoor.cxx b/sc/source/ui/drawfunc/fupoor.cxx
index 93b0e47ce010..af119de5370f 100644
--- a/sc/source/ui/drawfunc/fupoor.cxx
+++ b/sc/source/ui/drawfunc/fupoor.cxx
@@ -83,7 +83,7 @@ void FuPoor::ForceScroll(const Point& aPixPos)
     if ( aPixPos.Y() >= aSize.Height() ) dy =  1;
 
     ScViewData& rViewData = rViewShell.GetViewData();
-    if ( rViewData.GetDocument().IsNegativePage( rViewData.GetTabNo() ) )
+    if ( rViewData.GetDocument().IsNegativePage( rViewData.CurrentTabForData() 
) )
         dx = -dx;
 
     ScSplitPos eWhich = rViewData.GetActivePart();
diff --git a/sc/source/ui/drawfunc/fusel.cxx b/sc/source/ui/drawfunc/fusel.cxx
index 6bb680cd49a2..8fe07283ab7d 100644
--- a/sc/source/ui/drawfunc/fusel.cxx
+++ b/sc/source/ui/drawfunc/fusel.cxx
@@ -90,7 +90,7 @@ bool FuSelection::MouseButtonDown(const MouseEvent& rMEvt)
     {
         ScViewData& rViewData = rViewShell.GetViewData();
         ScDocument& rDocument = rViewData.GetDocument();
-        if (rDocument.IsNegativePage(rViewData.GetTabNo()))
+        if (rDocument.IsNegativePage(rViewData.CurrentTabForData()))
             aMDPos.setX(-aMDPos.X());
     }
 
@@ -360,7 +360,7 @@ bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt)
     ::std::vector< OUString > aExcludedChartNames;
     ScRangeListVector aProtectedChartRangesVector;
 
-    if (comphelper::LibreOfficeKit::isActive() && 
rDocument.IsNegativePage(rViewData.GetTabNo()))
+    if (comphelper::LibreOfficeKit::isActive() && 
rDocument.IsNegativePage(rViewData.CurrentTabForData()))
         aPnt.setX(-aPnt.X());
 
     if (pView && rMEvt.IsLeft())
@@ -547,7 +547,7 @@ bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt)
         ScModelObj* pModelObj = ( pDocShell ? pDocShell->GetModel() : nullptr 
);
         if ( pModelObj )
         {
-            SCTAB nTab = rViewData.GetTabNo();
+            SCTAB nTab = rViewData.CurrentTabForData();
             ScChartHelper::CreateProtectedChartListenersAndNotify( rDocument, 
pPage, pModelObj, nTab,
                 aProtectedChartRangesVector, aExcludedChartNames );
         }
diff --git a/sc/source/ui/drawfunc/fusel2.cxx b/sc/source/ui/drawfunc/fusel2.cxx
index cc9a1478ceb4..5dee99e4d472 100644
--- a/sc/source/ui/drawfunc/fusel2.cxx
+++ b/sc/source/ui/drawfunc/fusel2.cxx
@@ -120,7 +120,7 @@ bool FuSelection::IsNoteCaptionClicked( const Point& rPos ) 
const
     {
         const ScViewData& rViewData = rViewShell.GetViewData();
         ScDocument& rDoc = rViewData.GetDocument();
-        SCTAB nTab = rViewData.GetTabNo();
+        SCTAB nTab = rViewData.CurrentTabForData();
         ScDocShell* pDocSh = rViewData.GetDocShell();
         bool bProtectDoc =  rDoc.IsTabProtected( nTab ) || (pDocSh && 
pDocSh->IsReadOnly());
 
diff --git a/sc/source/ui/drawfunc/futext3.cxx 
b/sc/source/ui/drawfunc/futext3.cxx
index 11154d9bd7ff..1a501cf0bf4e 100644
--- a/sc/source/ui/drawfunc/futext3.cxx
+++ b/sc/source/ui/drawfunc/futext3.cxx
@@ -55,7 +55,7 @@ void FuText::StopEditMode()
 
     ScAddress aNotePos;
     ScPostIt* pNote = nullptr;
-    if( const ScDrawObjData* pCaptData = ScDrawLayer::GetNoteCaptionData( 
pObject, rViewData.GetTabNo() ) )
+    if( const ScDrawObjData* pCaptData = ScDrawLayer::GetNoteCaptionData( 
pObject, rViewData.CurrentTabForData() ) )
     {
         aNotePos = pCaptData->maStart;
         pNote = rDoc.GetNote( aNotePos );
diff --git a/sc/source/ui/formdlg/formula.cxx b/sc/source/ui/formdlg/formula.cxx
index 9af2adbe7472..0a24b5ccf6d3 100644
--- a/sc/source/ui/formdlg/formula.cxx
+++ b/sc/source/ui/formdlg/formula.cxx
@@ -117,7 +117,7 @@ ScFormulaDlg::ScFormulaDlg(SfxBindings* pB, SfxChildWindow* 
pCW,
     m_pDoc = &rViewData.GetDocument();
     SCCOL nCol = rViewData.GetCurX();
     SCROW nRow = rViewData.GetCurY();
-    SCTAB nTab = rViewData.GetTabNo();
+    SCTAB nTab = rViewData.CurrentTabForData();
     m_CursorPos = ScAddress( nCol, nRow, nTab );
 
     m_pViewShell->InitFormEditData();                             // create new
@@ -607,7 +607,7 @@ void ScFormulaDlg::switchBack()
 
     ScViewData& rVD=pScViewShell->GetViewData();
     SCTAB nExecTab = m_CursorPos.Tab();
-    if ( nExecTab != rVD.GetTabNo() )
+    if ( nExecTab != rVD.CurrentTabForData() )
         pScViewShell->SetTabNo( nExecTab );
 
     SCROW nRow = m_CursorPos.Row();
diff --git a/sc/source/ui/inc/olinewin.hxx b/sc/source/ui/inc/olinewin.hxx
index 7f99ae662436..0293a4b7c7d6 100644
--- a/sc/source/ui/inc/olinewin.hxx
+++ b/sc/source/ui/inc/olinewin.hxx
@@ -80,7 +80,7 @@ private:
     /** Returns the calc document. */
     ScDocument&          GetDoc() const { return mrViewData.GetDocument(); }
     /** Returns the current sheet index. */
-    SCTAB                GetTab() const { return mrViewData.GetTabNo(); }
+    SCTAB                GetTab() const { return 
mrViewData.CurrentTabForData(); }
     /** Returns the outline array of the corresponding document. */
     const ScOutlineArray*       GetOutlineArray() const;
     /** Returns the specified outline entry. */
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index ea57f68e05f8..9643f5984e34 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -399,8 +399,19 @@ public:
     SCTAB           GetRefTabNo() const                     { return 
nRefTabNo; }
     void            SetRefTabNo( SCTAB nNewTab )            { nRefTabNo = 
nNewTab; }
 
-    SCTAB GetTab() const { return mnTabNumber; }
-    SC_DLLPUBLIC SCTAB GetTabNo() const;
+    /** Returns the tab number for this view (UI)
+     *
+     * Directly return the value and ignore that there might be a sheet view 
tab.
+     */
+    SCTAB GetTabNumber() const { return mnTabNumber; }
+
+    /** Returns the tab that is currently used to fetch the data of a sheet
+     *
+     * This returns a different tab when view sheets are used. For a sheet view
+     * the data is stored in a different (sheet view specific) tab.
+     */
+    SC_DLLPUBLIC SCTAB CurrentTabForData() const;
+
     void SetSheetViewID(sc::SheetViewID nID)
     {
         pThisTab->mnSheetViewID = nID;
diff --git a/sc/source/ui/miscdlgs/anyrefdg.cxx 
b/sc/source/ui/miscdlgs/anyrefdg.cxx
index 18f3260718b0..e8b85e4e4cc8 100644
--- a/sc/source/ui/miscdlgs/anyrefdg.cxx
+++ b/sc/source/ui/miscdlgs/anyrefdg.cxx
@@ -186,7 +186,7 @@ void ScFormulaReferenceHelper::ShowFormulaReference(const 
OUString& rStr)
     ScTabViewShell* pTabViewShell=pViewData->GetViewShell();
     SCCOL nCol = pViewData->GetCurX();
     SCROW nRow = pViewData->GetCurY();
-    SCTAB nTab = pViewData->GetTabNo();
+    SCTAB nTab = pViewData->CurrentTabForData();
     ScAddress aPos( nCol, nRow, nTab );
 
     std::unique_ptr<ScTokenArray> pScTokA(m_pRefComp->CompileString(rStr));
@@ -320,7 +320,7 @@ void ScFormulaReferenceHelper::Init()
     ScDocument& rDoc = pViewData->GetDocument();
     SCCOL nCol = pViewData->GetCurX();
     SCROW nRow = pViewData->GetCurY();
-    SCTAB nTab = pViewData->GetTabNo();
+    SCTAB nTab = pViewData->CurrentTabForData();
     ScAddress aCursorPos( nCol, nRow, nTab );
 
     m_pRefComp.reset( new ScCompiler( rDoc, aCursorPos, rDoc.GetGrammar()) );
diff --git a/sc/source/ui/miscdlgs/autofmt.cxx 
b/sc/source/ui/miscdlgs/autofmt.cxx
index a8dbe981d386..6a243a3430a3 100644
--- a/sc/source/ui/miscdlgs/autofmt.cxx
+++ b/sc/source/ui/miscdlgs/autofmt.cxx
@@ -424,7 +424,7 @@ void ScAutoFmtPreview::Init()
 
 void ScAutoFmtPreview::DetectRTL(const ScViewData& rViewData)
 {
-    SCTAB nCurrentTab = rViewData.GetTabNo();
+    SCTAB nCurrentTab = rViewData.CurrentTabForData();
     ScDocument& rDoc = rViewData.GetDocument();
     mbRTL = rDoc.IsLayoutRTL(nCurrentTab);
     xBreakIter = rDoc.GetBreakIterator();
diff --git a/sc/source/ui/miscdlgs/datafdlg.cxx 
b/sc/source/ui/miscdlgs/datafdlg.cxx
index 3c6670109446..2e31e8f8d01a 100644
--- a/sc/source/ui/miscdlgs/datafdlg.cxx
+++ b/sc/source/ui/miscdlgs/datafdlg.cxx
@@ -56,7 +56,7 @@ ScDataFormDlg::ScDataFormDlg(weld::Window* pParent, 
ScTabViewShell* pTabViewShel
         nStartRow   = aStart.Row();
         nEndRow = aEnd.Row();
 
-        nTab = rViewData.GetTabNo();
+        nTab = rViewData.CurrentTabForData();
         bool bNoSelection(false);
         //if there is no selection
         if ((nStartCol == nEndCol) && (nStartRow == nEndRow))
diff --git a/sc/source/ui/miscdlgs/duplicaterecordsdlg.cxx 
b/sc/source/ui/miscdlgs/duplicaterecordsdlg.cxx
index c9881b209973..81bc20b68a42 100644
--- a/sc/source/ui/miscdlgs/duplicaterecordsdlg.cxx
+++ b/sc/source/ui/miscdlgs/duplicaterecordsdlg.cxx
@@ -88,7 +88,7 @@ void ScDuplicateRecordsDlg::SetDialogData(bool bToggle)
         {
             for (int i = mrRange.aStart.Col(); i <= mrRange.aEnd.Col(); ++i)
             {
-                OUString aStr(ScAddress(i, 0, mrViewData.GetTabNo())
+                OUString aStr(ScAddress(i, 0, mrViewData.CurrentTabForData())
                                   .Format(ScRefFlags::COL_VALID, 
&mrViewData.GetDocument()));
                 InsertEntry(aStr, bToggle);
             }
@@ -148,7 +148,7 @@ void ScDuplicateRecordsDlg::Init()
         = 
officecfg::Office::Calc::Misc::HandleDuplicateRecords::DataIncludesHeaders::get();
 
     ScDBCollection* pDBColl = rDoc.GetDBCollection();
-    const SCTAB nCurTab = mrViewData.GetTabNo();
+    const SCTAB nCurTab = mrViewData.CurrentTabForData();
     if (pDBColl)
     {
         ScDBData* pDBData
diff --git a/sc/source/ui/miscdlgs/inscldlg.cxx 
b/sc/source/ui/miscdlgs/inscldlg.cxx
index 21ede36e8f3b..ace8e7120a6c 100644
--- a/sc/source/ui/miscdlgs/inscldlg.cxx
+++ b/sc/source/ui/miscdlgs/inscldlg.cxx
@@ -37,7 +37,7 @@ ScInsertCellDlg::ScInsertCellDlg(weld::Window* pParent, bool 
bDisallowCellMove)
     , m_xNumberOfCols(m_xBuilder->weld_spin_button(u"number_of_columns"_ustr))
 {
     const ScViewData* pViewData = ScDocShell::GetViewData();
-    if (pViewData && 
pViewData->GetDocument().IsLayoutRTL(pViewData->GetTabNo()))
+    if (pViewData && 
pViewData->GetDocument().IsLayoutRTL(pViewData->CurrentTabForData()))
         m_xBtnCellsRight->set_label(ScResId(SCSTR_INSERT_RTL));
 
     m_xNumberOfRows->set_range(1, MAX_INS_ROWS);
diff --git a/sc/source/ui/namedlg/namepast.cxx 
b/sc/source/ui/namedlg/namepast.cxx
index b31a4fbd0995..165eb6b946af 100644
--- a/sc/source/ui/namedlg/namepast.cxx
+++ b/sc/source/ui/namedlg/namepast.cxx
@@ -46,7 +46,8 @@ ScNamePasteDlg::ScNamePasteDlg(weld::Window* pParent, 
ScDocShell* pShell)
 
     ScAddress aPos;
     if (ScViewData* pViewData = ScDocShell::GetViewData())
-        aPos = ScAddress(pViewData->GetCurX(), pViewData->GetCurY(), 
pViewData->GetTabNo());
+        aPos
+            = ScAddress(pViewData->GetCurX(), pViewData->GetCurY(), 
pViewData->CurrentTabForData());
 
     std::unique_ptr<weld::TreeView> 
xTreeView(m_xBuilder->weld_tree_view(u"ctrl"_ustr));
     xTreeView->set_size_request(xTreeView->get_approximate_digit_width() * 75,
diff --git a/sc/source/ui/navipi/navipi.cxx b/sc/source/ui/navipi/navipi.cxx
index 4344f5eb1392..1488016c34d7 100644
--- a/sc/source/ui/navipi/navipi.cxx
+++ b/sc/source/ui/navipi/navipi.cxx
@@ -763,7 +763,7 @@ void ScNavigatorDlg::UpdateTable( const SCTAB* pTab )
     if ( pTab )
         nCurTab = *pTab;
     else if ( GetViewData() )
-        nCurTab = pViewData->GetTabNo();
+        nCurTab = pViewData->CurrentTabForData();
 }
 
 void ScNavigatorDlg::UpdateAll()
diff --git a/sc/source/ui/optdlg/tpusrlst.cxx b/sc/source/ui/optdlg/tpusrlst.cxx
index 3ee897edc2fd..443866f8f0d8 100644
--- a/sc/source/ui/optdlg/tpusrlst.cxx
+++ b/sc/source/ui/optdlg/tpusrlst.cxx
@@ -667,7 +667,7 @@ IMPL_LINK( ScTpUserLists, BtnClickHdl, weld::Button&, rBtn, 
void )
         {
             bAreaOk = ScRangeUtil::IsAbsArea( theAreaStr,
                                              *pDoc,
-                                             pViewData->GetTabNo(),
+                                             pViewData->CurrentTabForData(),
                                              &theAreaStr,
                                              &theStartPos,
                                              &theEndPos,
@@ -676,7 +676,7 @@ IMPL_LINK( ScTpUserLists, BtnClickHdl, weld::Button&, rBtn, 
void )
             {
                 bAreaOk = ScRangeUtil::IsAbsPos(  theAreaStr,
                                                  *pDoc,
-                                                 pViewData->GetTabNo(),
+                                                 
pViewData->CurrentTabForData(),
                                                  &theAreaStr,
                                                  &theStartPos,
                                                  pDoc->GetAddressConvention() 
);
diff --git a/sc/source/ui/pagedlg/areasdlg.cxx 
b/sc/source/ui/pagedlg/areasdlg.cxx
index 57a93d4cd5f3..a0188e4129e3 100644
--- a/sc/source/ui/pagedlg/areasdlg.cxx
+++ b/sc/source/ui/pagedlg/areasdlg.cxx
@@ -137,7 +137,7 @@ ScPrintAreasDlg::ScPrintAreasDlg(SfxBindings* pB, 
SfxChildWindow* pCW, weld::Win
     if ( pScViewSh )
     {
         pViewData = &pScViewSh->GetViewData();
-        nCurTab   = pViewData->GetTabNo();
+        nCurTab   = pViewData->CurrentTabForData();
     }
 
     Impl_Reset();
diff --git a/sc/source/ui/pagedlg/tphf.cxx b/sc/source/ui/pagedlg/tphf.cxx
index b6421f2b948e..b4dad51ccfc1 100644
--- a/sc/source/ui/pagedlg/tphf.cxx
+++ b/sc/source/ui/pagedlg/tphf.cxx
@@ -60,7 +60,7 @@ ScHFPage::ScHFPage(weld::Container* pPage, 
weld::DialogController* pController,
         ScViewData& rViewData = pViewSh->GetViewData();
         ScDocument& rDoc      = rViewData.GetDocument();
 
-        aStrPageStyle = rDoc.GetPageStyle( rViewData.GetTabNo() );
+        aStrPageStyle = rDoc.GetPageStyle( rViewData.CurrentTabForData() );
     }
 
     m_xBtnEdit->connect_clicked(LINK(this, ScHFPage, BtnHdl));
diff --git a/sc/source/ui/uitest/uiobject.cxx b/sc/source/ui/uitest/uiobject.cxx
index 0148f8f4f52e..f1d1455f8c69 100644
--- a/sc/source/ui/uitest/uiobject.cxx
+++ b/sc/source/ui/uitest/uiobject.cxx
@@ -64,7 +64,7 @@ StringMap ScGridWinUIObject::get_state()
 {
     StringMap aMap = WindowUIObject::get_state();
 
-    aMap[u"SelectedTable"_ustr] = 
OUString::number(mxGridWindow->getViewData().GetTabNo());
+    aMap[u"SelectedTable"_ustr] = 
OUString::number(mxGridWindow->getViewData().CurrentTabForData());
     aMap[u"CurrentColumn"_ustr] = 
OUString::number(mxGridWindow->getViewData().GetCurX());
     aMap[u"CurrentRow"_ustr] = 
OUString::number(mxGridWindow->getViewData().GetCurY());
 
@@ -81,7 +81,7 @@ StringMap ScGridWinUIObject::get_state()
     aMap[u"MarkedArea"_ustr] = aMarkedAreaString;
 
     ScDocument& rDoc = mxGridWindow->getViewData().GetDocument();
-    ScAddress aPos( mxGridWindow->getViewData().GetCurX() , 
mxGridWindow->getViewData().GetCurY() , mxGridWindow->getViewData().GetTabNo() 
);
+    ScAddress aPos( mxGridWindow->getViewData().GetCurX() , 
mxGridWindow->getViewData().GetCurY() , 
mxGridWindow->getViewData().CurrentTabForData() );
     if ( rDoc.HasNote( aPos ) )
     {
         ScPostIt* pNote = rDoc.GetNote(aPos);
@@ -91,13 +91,13 @@ StringMap ScGridWinUIObject::get_state()
 
     SCCOL nCol;
     SCROW nRow;
-    aMap[u"CurrentTableHasData"_ustr] = OUString::boolean( rDoc.GetDataStart( 
mxGridWindow->getViewData().GetTabNo(), nCol, nRow ) );
+    aMap[u"CurrentTableHasData"_ustr] = OUString::boolean( rDoc.GetDataStart( 
mxGridWindow->getViewData().CurrentTabForData(), nCol, nRow ) );
     nCol = mxGridWindow->getViewData().GetCurX();
     nRow = 0;
-    aMap[u"CurrentColumnHasData"_ustr] = OUString::boolean( 
rDoc.GetPrintAreaVer( mxGridWindow->getViewData().GetTabNo(), nCol, nCol, nRow, 
true ) );
+    aMap[u"CurrentColumnHasData"_ustr] = OUString::boolean( 
rDoc.GetPrintAreaVer( mxGridWindow->getViewData().CurrentTabForData(), nCol, 
nCol, nRow, true ) );
     nRow = mxGridWindow->getViewData().GetCurY();
     nCol = 0;
-    aMap[u"CurrentRowHasData"_ustr] = OUString::boolean( rDoc.GetPrintAreaHor( 
mxGridWindow->getViewData().GetTabNo(), nRow, nRow, nCol ) );
+    aMap[u"CurrentRowHasData"_ustr] = OUString::boolean( rDoc.GetPrintAreaHor( 
mxGridWindow->getViewData().CurrentTabForData(), nRow, nRow, nCol ) );
 
     ScAppOptions aOpt = ScModule::get()->GetAppOptions();
     aMap[u"Zoom"_ustr] = OUString::number( aOpt.GetZoom() );
@@ -309,7 +309,7 @@ void ScGridWinUIObject::execute(const OUString& rAction,
             auto itr = rParameters.find(u"SETTEXT"_ustr);
             const OUString rStr = itr->second;
             ScDocument& rDoc = mxGridWindow->getViewData().GetDocument();
-            ScAddress aPos( mxGridWindow->getViewData().GetCurX() , 
mxGridWindow->getViewData().GetCurY() , mxGridWindow->getViewData().GetTabNo() 
);
+            ScAddress aPos( mxGridWindow->getViewData().GetCurX() , 
mxGridWindow->getViewData().GetCurY() , 
mxGridWindow->getViewData().CurrentTabForData() );
             rDoc.GetOrCreateNote( aPos )->SetText( aPos , rStr );
         }
     }
@@ -370,7 +370,7 @@ SdrPage* get_draw_page(VclPtr<ScGridWindow> const & 
xGridWindow, SCTAB nTab)
 
 std::set<OUString> collect_charts(VclPtr<ScGridWindow> const & xGridWindow)
 {
-    SCTAB nTab = xGridWindow->getViewData().GetTabNo();
+    SCTAB nTab = xGridWindow->getViewData().CurrentTabForData();
     SdrPage* pPage = get_draw_page(xGridWindow, nTab);
 
     std::set<OUString> aRet;
diff --git a/sc/source/ui/undo/undobase.cxx b/sc/source/ui/undo/undobase.cxx
index f939351fa19d..e6d0f32c05e6 100644
--- a/sc/source/ui/undo/undobase.cxx
+++ b/sc/source/ui/undo/undobase.cxx
@@ -235,7 +235,7 @@ void ScSimpleUndo::ShowTable( const ScRange& rRange )
     {
         SCTAB nStart = rRange.aStart.Tab();
         SCTAB nEnd   = rRange.aEnd.Tab();
-        SCTAB nTab = pViewShell->GetViewData().GetTabNo();
+        SCTAB nTab = pViewShell->GetViewData().CurrentTabForData();
         if ( nTab < nStart || nTab > nEnd )                     // if not in 
range:
             pViewShell->SetTabNo( nStart );                     // at 
beginning of the range
     }
@@ -346,7 +346,7 @@ void ScBlockUndo::ShowBlock()
     ShowTable( aBlockRange );       // with multiple sheets in range each of 
them is good
     pViewShell->MoveCursorAbs( aBlockRange.aStart.Col(), 
aBlockRange.aStart.Row(),
                                SC_FOLLOW_JUMP, false, false );
-    SCTAB nTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nTab = pViewShell->GetViewData().CurrentTabForData();
     ScRange aRange = aBlockRange;
     aRange.aStart.SetTab( nTab );
     aRange.aEnd.SetTab( nTab );
@@ -406,7 +406,7 @@ void ScMultiBlockUndo::ShowBlock()
     ShowTable(aRange);
     pViewShell->MoveCursorAbs(
         aRange.aStart.Col(), aRange.aStart.Row(), SC_FOLLOW_JUMP, false, 
false);
-    SCTAB nTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nTab = pViewShell->GetViewData().CurrentTabForData();
     aRange.aStart.SetTab(nTab);
     aRange.aEnd.SetTab(nTab);
     pViewShell->MarkRange(aRange, false);
diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx
index b70394179524..5b30ac8c470e 100644
--- a/sc/source/ui/undo/undoblk.cxx
+++ b/sc/source/ui/undo/undoblk.cxx
@@ -273,7 +273,7 @@ void ScUndoInsertCells::DoChange( const bool bUndo )
     if (!comphelper::LibreOfficeKit::isActive())
         return;
 
-    SCTAB nTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nTab = pViewShell->GetViewData().CurrentTabForData();
     bool bColsAffected = (eCmd == INS_INSCOLS_BEFORE || eCmd == 
INS_INSCOLS_AFTER || eCmd == INS_CELLSRIGHT);
     bool bRowsAffected = (eCmd == INS_INSROWS_BEFORE || eCmd == 
INS_INSROWS_AFTER || eCmd == INS_CELLSDOWN);
 
@@ -544,7 +544,7 @@ void ScUndoDeleteCells::DoChange( const bool bUndo )
     if (!comphelper::LibreOfficeKit::isActive())
         return;
 
-    SCTAB nTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nTab = pViewShell->GetViewData().CurrentTabForData();
     bool bColsAffected = (eCmd == DelCellCmd::Cols || eCmd == 
DelCellCmd::CellsLeft);
     bool bRowsAffected = (eCmd == DelCellCmd::Rows || eCmd == 
DelCellCmd::CellsUp);
 
@@ -1866,7 +1866,7 @@ bool ScUndoUseScenario::CanRepeat(SfxRepeatTarget& 
rTarget) const
     if (auto pViewTarget = dynamic_cast<ScTabViewTarget*>( &rTarget))
     {
         ScViewData& rViewData = pViewTarget->GetViewShell()->GetViewData();
-        return !rViewData.GetDocument().IsScenario( rViewData.GetTabNo() );
+        return !rViewData.GetDocument().IsScenario( 
rViewData.CurrentTabForData() );
     }
     return false;
 }
diff --git a/sc/source/ui/undo/undoblk2.cxx b/sc/source/ui/undo/undoblk2.cxx
index 52ee421cc3de..17aff9b2f9f1 100644
--- a/sc/source/ui/undo/undoblk2.cxx
+++ b/sc/source/ui/undo/undoblk2.cxx
@@ -125,7 +125,7 @@ void ScUndoWidthOrHeight::Undo()
 
     if (pViewShell)
     {
-        SCTAB nCurrentTab = pViewShell->GetViewData().GetTabNo();
+        SCTAB nCurrentTab = pViewShell->GetViewData().CurrentTabForData();
         bool bAffectsVisibility = (eMode != SC_SIZE_ORIGINAL && eMode != 
SC_SIZE_VISOPT);
         ScTabViewShell::notifyAllViewsSheetGeomInvalidation(
                 pViewShell, bWidth /* bColumns */, !bWidth /* bRows */,
@@ -156,7 +156,7 @@ void ScUndoWidthOrHeight::Redo()
     ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
     if (pViewShell)
     {
-        SCTAB nTab = pViewShell->GetViewData().GetTabNo();
+        SCTAB nTab = pViewShell->GetViewData().CurrentTabForData();
         if ( nTab < nStartTab || nTab > nEndTab )
             pViewShell->SetTabNo( nStartTab );
 
diff --git a/sc/source/ui/undo/undoblk3.cxx b/sc/source/ui/undo/undoblk3.cxx
index 9c4bc4409ebd..12b0217f6cf0 100644
--- a/sc/source/ui/undo/undoblk3.cxx
+++ b/sc/source/ui/undo/undoblk3.cxx
@@ -306,7 +306,7 @@ void ScUndoFillTable::DoChange( const bool bUndo )
     ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
     if (pViewShell)
     {
-        SCTAB nTab = pViewShell->GetViewData().GetTabNo();
+        SCTAB nTab = pViewShell->GetViewData().CurrentTabForData();
         if ( !aMarkData.GetTableSelect(nTab) )
             pViewShell->SetTabNo( nSrcTab );
 
diff --git a/sc/source/ui/undo/undocell.cxx b/sc/source/ui/undo/undocell.cxx
index c7c085d1fe15..22d08bbe7830 100644
--- a/sc/source/ui/undo/undocell.cxx
+++ b/sc/source/ui/undo/undocell.cxx
@@ -632,7 +632,7 @@ void ScUndoPrintZoom::Repeat(SfxRepeatTarget& rTarget)
     {
         ScTabViewShell& rViewShell = *pViewTarget->GetViewShell();
         ScViewData& rViewData = rViewShell.GetViewData();
-        rViewData.GetDocShell()->SetPrintZoom( rViewData.GetTabNo(), 
nNewScale, nNewPages );
+        rViewData.GetDocShell()->SetPrintZoom( rViewData.CurrentTabForData(), 
nNewScale, nNewPages );
     }
 }
 
diff --git a/sc/source/ui/undo/undodat.cxx b/sc/source/ui/undo/undodat.cxx
index f34ebba87d32..f3f3156a2664 100644
--- a/sc/source/ui/undo/undodat.cxx
+++ b/sc/source/ui/undo/undodat.cxx
@@ -87,7 +87,7 @@ void ScUndoDoOutline::Undo()
 
     // sheet has to be switched over (#46952#)!
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -125,7 +125,7 @@ void ScUndoDoOutline::Redo()
 
     // sheet has to be switched over (#46952#)!
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -186,7 +186,7 @@ void ScUndoMakeOutline::Undo()
 
     rDoc.SetOutlineTable( nTab, pUndoTable.get() );
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -291,7 +291,7 @@ void ScUndoOutlineLevel::Undo()
             true /* bGroups */, nTab);
     pViewShell->UpdateScrollBars();
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -310,7 +310,7 @@ void ScUndoOutlineLevel::Redo()
 
     // sheet has to be switched on or off before this (#46952#) !!!
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -391,7 +391,7 @@ void ScUndoOutlineBlock::Undo()
             true /* bGroups */, nTab);
     pViewShell->UpdateScrollBars();
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -483,7 +483,7 @@ void ScUndoRemoveAllOutlines::Undo()
 
     pViewShell->UpdateScrollBars();
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -510,7 +510,7 @@ void ScUndoRemoveAllOutlines::Redo()
     // sheet has to be switched over (#46952#)!
 
     SCTAB nTab = aBlockStart.Tab();
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -579,7 +579,7 @@ void ScUndoAutoOutline::Undo()
         pViewShell->UpdateScrollBars();
     }
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -599,7 +599,7 @@ void ScUndoAutoOutline::Redo()
     SCTAB nTab = aBlockStart.Tab();
     // sheet has to be switched on or off before this (#46952#) !!!
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -709,7 +709,7 @@ void ScUndoSubTotals::Undo()
     if (xUndoDB)
         rDoc.SetDBCollection(std::unique_ptr<ScDBCollection>(new 
ScDBCollection(*xUndoDB)), true);
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -727,7 +727,7 @@ void ScUndoSubTotals::Redo()
 
     BeginRedo();
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -863,7 +863,7 @@ void ScUndoQuery::Undo()
 
     DoSdrUndoAction( pDrawUndo.get(), &rDoc );
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -911,7 +911,7 @@ void ScUndoQuery::Redo()
 
     BeginRedo();
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -1174,7 +1174,7 @@ void ScUndoImportData::Undo()
         ScUndoUtil::MarkSimpleBlock( pDocShell, nCol1, nRow1, nTable, nCol2, 
nRow2, nTable );
     }
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -1246,7 +1246,7 @@ void ScUndoImportData::Redo()
         ScUndoUtil::MarkSimpleBlock( pDocShell, nCol1, nRow1, nTable, nCol2, 
nRow2, nTable );
     }
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -1409,7 +1409,7 @@ void ScUndoRepeatDB::Undo()
             false /* bSizes*/, true /* bHidden */, true /* bFiltered */,
             false /* bGroups */, nTab);
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -1429,7 +1429,7 @@ void ScUndoRepeatDB::Redo()
 
     SCTAB nTab = aBlockStart.Tab();
 
-    SCTAB nVisTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nVisTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nVisTab != nTab )
         pViewShell->SetTabNo( nTab );
 
@@ -1687,7 +1687,7 @@ void ScUndoConsolidate::Undo()
     ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
     if (pViewShell)
     {
-        SCTAB nViewTab = pViewShell->GetViewData().GetTabNo();
+        SCTAB nViewTab = pViewShell->GetViewData().CurrentTabForData();
         if ( nViewTab != nTab )
             pViewShell->SetTabNo( nTab );
     }
@@ -1704,7 +1704,7 @@ void ScUndoConsolidate::Redo()
     ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
     if (pViewShell)
     {
-        SCTAB nViewTab = pViewShell->GetViewData().GetTabNo();
+        SCTAB nViewTab = pViewShell->GetViewData().CurrentTabForData();
         if ( nViewTab != aParam.nTab )
             pViewShell->SetTabNo( aParam.nTab );
     }
diff --git a/sc/source/ui/undo/undotab.cxx b/sc/source/ui/undo/undotab.cxx
index 52d1a18ff62d..3d9c768185e6 100644
--- a/sc/source/ui/undo/undotab.cxx
+++ b/sc/source/ui/undo/undotab.cxx
@@ -506,7 +506,7 @@ void ScUndoDeleteTab::Repeat(SfxRepeatTarget& rTarget)
     if (auto pViewTarget = dynamic_cast<ScTabViewTarget*>( &rTarget))
     {
         ScTabViewShell* pViewShell = pViewTarget->GetViewShell();
-        pViewShell->DeleteTable( pViewShell->GetViewData().GetTabNo() );
+        pViewShell->DeleteTable( pViewShell->GetViewData().CurrentTabForData() 
);
     }
 }
 
diff --git a/sc/source/ui/undo/undoutil.cxx b/sc/source/ui/undo/undoutil.cxx
index de9a50ef8283..38bf22641ee0 100644
--- a/sc/source/ui/undo/undoutil.cxx
+++ b/sc/source/ui/undo/undoutil.cxx
@@ -39,7 +39,7 @@ void ScUndoUtil::MarkSimpleBlock( const ScDocShell* pDocShell,
     if (!pViewShell)
         return;
 
-    SCTAB nViewTab = pViewShell->GetViewData().GetTabNo();
+    SCTAB nViewTab = pViewShell->GetViewData().CurrentTabForData();
     if ( nViewTab < nStartZ || nViewTab > nEndZ )
         pViewShell->SetTabNo( nStartZ );
 
diff --git a/sc/source/ui/unoobj/dispuno.cxx b/sc/source/ui/unoobj/dispuno.cxx
index 536d271d643f..c5edbabfd5e1 100644
--- a/sc/source/ui/unoobj/dispuno.cxx
+++ b/sc/source/ui/unoobj/dispuno.cxx
@@ -209,7 +209,7 @@ void SAL_CALL ScDispatch::dispatch( const util::URL& aURL,
     if ( pViewShell && aURL.Complete == cURLInsertColumns )
     {
         ScViewData& rViewData = pViewShell->GetViewData();
-        ScAddress aPos( rViewData.GetCurX(), rViewData.GetCurY(), 
rViewData.GetTabNo() );
+        ScAddress aPos( rViewData.GetCurX(), rViewData.GetCurY(), 
rViewData.CurrentTabForData() );
 
         ScDBDocFunc aFunc( *rViewData.GetDocShell() );
         aFunc.DoImportUno( aPos, aArgs );
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 1bad5589add9..4edce1d6a496 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -541,7 +541,7 @@ static ScViewData* lcl_getViewMatchingDocZoomTab(const 
Fraction& rZoomX,
             continue;
 
         ScViewData& rData = pTabViewShell->GetViewData();
-        if (rData.GetTabNo() == nTab && rData.GetZoomX() == rZoomX && 
rData.GetZoomY() == rZoomY &&
+        if (rData.CurrentTabForData() == nTab && rData.GetZoomX() == rZoomX && 
rData.GetZoomY() == rZoomY &&
             getTabViewRenderState(*pTabViewShell) == rViewRenderState)
         {
             return &rData;
@@ -570,7 +570,7 @@ void ScModelObj::paintTile( VirtualDevice& rDevice,
     // first few shells. This is to avoid switching of zooms in 
ScGridWindow::PaintTile
     // and hence avoid grid-offset recomputation on all shapes which is not 
cheap.
     ScViewData* pViewData = lcl_getViewMatchingDocZoomTab(aFracX, aFracY,
-            pActiveViewData->GetTabNo(), pViewShell->GetDocId(),
+            pActiveViewData->CurrentTabForData(), pViewShell->GetDocId(),
             getTabViewRenderState(*pViewShell));
     if (!pViewData)
         pViewData = pActiveViewData;
@@ -601,7 +601,7 @@ void ScModelObj::paintTile( VirtualDevice& rDevice,
 
     // Draw Form controls
     ScDrawLayer* pDrawLayer = pDocShell->GetDocument().GetDrawLayer();
-    SdrPage* pPage = pDrawLayer->GetPage(sal_uInt16(pViewData->GetTabNo()));
+    SdrPage* pPage = 
pDrawLayer->GetPage(sal_uInt16(pViewData->CurrentTabForData()));
     SdrView* pDrawView = pViewData->GetViewShell()->GetScDrawView();
     tools::Rectangle aTileRect(Point(nTilePosX, nTilePosY), Size(nTileWidth, 
nTileHeight));
     Size aOutputSize(nOutputWidth, nOutputHeight);
@@ -722,7 +722,7 @@ Size ScModelObj::getDocumentSize(SCCOL& 
rnTiledRenderingAreaEndCol, SCROW& rnTil
     if (!pViewData)
         return aSize;
 
-    SCTAB nTab = pViewData->GetTabNo();
+    SCTAB nTab = pViewData->CurrentTabForData();
     rnTiledRenderingAreaEndCol = 0;
     rnTiledRenderingAreaEndRow = 0;
     const ScDocument& rDoc = pDocShell->GetDocument();
@@ -803,7 +803,7 @@ void ScModelObj::postMouseEvent(int nType, int nX, int nY, 
int nCount, int nButt
     if (!pGridWindow)
         return;
 
-    SCTAB nTab = pViewData->GetTabNo();
+    SCTAB nTab = pViewData->CurrentTabForData();
     const ScDocument& rDoc = pDocShell->GetDocument();
     bool bDrawNegativeX = rDoc.IsNegativePage(nTab);
     if (SfxLokHelper::testInPlaceComponentMouseEventHit(pViewShell, nType, nX, 
nY, nCount,
diff --git a/sc/source/ui/unoobj/viewuno.cxx b/sc/source/ui/unoobj/viewuno.cxx
index 02f66358cb25..97bb4aa6c613 100644
--- a/sc/source/ui/unoobj/viewuno.cxx
+++ b/sc/source/ui/unoobj/viewuno.cxx
@@ -270,7 +270,7 @@ table::CellRangeAddress SAL_CALL 
ScViewPaneBase::getVisibleRange()
         SCROW nVisY = rViewData.VisibleCellsY( eWhichV );
         if (!nVisX) nVisX = 1;  // there has to be something in the range
         if (!nVisY) nVisY = 1;
-        aAdr.Sheet       = rViewData.GetTabNo();
+        aAdr.Sheet       = rViewData.CurrentTabForData();
         aAdr.StartColumn = rViewData.GetPosX( eWhichH );
         aAdr.StartRow    = rViewData.GetPosY( eWhichV );
         aAdr.EndColumn   = aAdr.StartColumn + nVisX - 1;
@@ -397,7 +397,7 @@ awt::Rectangle ScViewPaneBase::GetVisArea() const
                                     SC_SPLIT_TOP : SC_SPLIT_BOTTOM;
             ScAddress aCell(pViewShell->GetViewData().GetPosX(eWhichH),
                 pViewShell->GetViewData().GetPosY(eWhichV),
-                pViewShell->GetViewData().GetTabNo());
+                pViewShell->GetViewData().CurrentTabForData());
             tools::Rectangle aCellRect( rDoc.GetMMRect( aCell.Col(), 
aCell.Row(), aCell.Col(), aCell.Row(), aCell.Tab() ) );
             Size aVisSize( pWindow->PixelToLogic( pWindow->GetSizePixel(), 
pWindow->GetDrawMapMode( true ) ) );
             Point aVisPos( aCellRect.TopLeft() );
@@ -456,7 +456,7 @@ ScTabViewObj::ScTabViewObj( ScTabViewShell* pViewSh ) :
     mbLeftMousePressed(false)
 {
     if (pViewSh)
-        nPreviousTab = pViewSh->GetViewData().GetTabNo();
+        nPreviousTab = pViewSh->GetViewData().CurrentTabForData();
 }
 
 ScTabViewObj::~ScTabViewObj()
@@ -557,7 +557,7 @@ void ScTabViewObj::SheetChanged( bool bSameTabButMoved )
         sheet::ActivationEvent aEvent;
         uno::Reference< sheet::XSpreadsheetView > xView(this);
         aEvent.Source.set(xView, uno::UNO_QUERY);
-        aEvent.ActiveSheet = new ScTableSheetObj(pDocSh, rViewData.GetTabNo());
+        aEvent.ActiveSheet = new ScTableSheetObj(pDocSh, 
rViewData.CurrentTabForData());
         // Listener's handler may remove it from the listeners list
         for (size_t i = aActivationListeners.size(); i > 0; --i)
         {
@@ -574,7 +574,7 @@ void ScTabViewObj::SheetChanged( bool bSameTabButMoved )
 
     /*  Handle sheet events, but do not trigger event handlers, if the old
         active sheet gets re-activated after inserting/deleting/moving a 
sheet. */
-    SCTAB nNewTab = rViewData.GetTabNo();
+    SCTAB nNewTab = rViewData.CurrentTabForData();
     if ( !bSameTabButMoved && (nNewTab != nPreviousTab) )
     {
         lcl_CallActivate( pDocSh, nPreviousTab, ScSheetEventId::UNFOCUS );
@@ -736,7 +736,7 @@ sal_Bool SAL_CALL ScTabViewObj::select( const uno::Any& 
aSelection )
                 // multiselection
 
                 const ScRange & rFirst = rRanges[ 0 ];
-                if ( !lcl_TabInRanges( rViewData.GetTabNo(), rRanges ) )
+                if ( !lcl_TabInRanges( rViewData.CurrentTabForData(), rRanges 
) )
                     pViewSh->SetTabNo( rFirst.aStart.Tab() );
                 pViewSh->DoneBlockMode();
                 pViewSh->InitOwnBlockMode( rFirst );    /* TODO: or even the 
overall range? */
@@ -1088,7 +1088,7 @@ uno::Reference<sheet::XSpreadsheet> SAL_CALL 
ScTabViewObj::getActiveSheet()
     if (pViewSh)
     {
         ScViewData& rViewData = pViewSh->GetViewData();
-        SCTAB nTab = rViewData.GetTabNo();
+        SCTAB nTab = rViewData.CurrentTabForData();
         return new ScTableSheetObj( rViewData.GetDocShell(), nTab );
     }
     return nullptr;
@@ -1128,7 +1128,7 @@ uno::Reference< uno::XInterface > 
ScTabViewObj::GetClickedObject(const Point& rP
         SCROW nY;
         ScViewData& rData = GetViewShell()->GetViewData();
         ScSplitPos eSplitMode = rData.GetActivePart();
-        SCTAB nTab(rData.GetTabNo());
+        SCTAB nTab(rData.CurrentTabForData());
         rData.GetPosFromPixel( rPoint.X(), rPoint.Y(), eSplitMode, nX, nY);
 
         ScAddress aCellPos (nX, nY, nTab);
@@ -1174,7 +1174,7 @@ bool ScTabViewObj::IsMouseListening() const
     // also include sheet events, because MousePressed must be called for them
     ScViewData& rViewData = GetViewShell()->GetViewData();
     ScDocument& rDoc = rViewData.GetDocument();
-    SCTAB nTab = rViewData.GetTabNo();
+    SCTAB nTab = rViewData.CurrentTabForData();
     return
         rDoc.HasSheetEventScript( nTab, ScSheetEventId::RIGHTCLICK, true ) ||
         rDoc.HasSheetEventScript( nTab, ScSheetEventId::DOUBLECLICK, true ) ||
@@ -1227,7 +1227,7 @@ bool ScTabViewObj::MousePressed( const awt::MouseEvent& e 
)
         ScViewData& rViewData = pViewSh->GetViewData();
         ScDocShell* pDocSh = rViewData.GetDocShell();
         ScDocument& rDoc = pDocSh->GetDocument();
-        SCTAB nTab = rViewData.GetTabNo();
+        SCTAB nTab = rViewData.CurrentTabForData();
         const ScSheetEvents* pEvents = rDoc.GetSheetEvents(nTab);
         if (pEvents)
         {
@@ -1702,7 +1702,7 @@ void ScTabViewObj::SelectionChanged()
     ScViewData& rViewData = pViewSh->GetViewData();
     ScDocShell* pDocSh = rViewData.GetDocShell();
     ScDocument& rDoc = pDocSh->GetDocument();
-    SCTAB nTab = rViewData.GetTabNo();
+    SCTAB nTab = rViewData.CurrentTabForData();
     const ScSheetEvents* pEvents = rDoc.GetSheetEvents(nTab);
     if (pEvents)
     {
@@ -2198,7 +2198,7 @@ uno::Sequence<sal_Int32> ScTabViewObj::getSelectedSheets()
     if (pExtOpt && pExtOpt->IsChanged())
     {
         pViewSh->GetViewData().ReadExtOptions(*pExtOpt);        // Excel view 
settings
-        pViewSh->SetTabNo(pViewSh->GetViewData().GetTabNo(), true);
+        pViewSh->SetTabNo(pViewSh->GetViewData().CurrentTabForData(), true);
         pExtOpt->SetChanged(false);
     }
 
diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx
index 23af261add38..ae99dbeebe30 100644
--- a/sc/source/ui/view/cellsh.cxx
+++ b/sc/source/ui/view/cellsh.cxx
@@ -114,7 +114,7 @@ void ScCellShell::GetBlockState( SfxItemSet& rSet )
     nRow1 = aMarkRange.aStart.Row();
     nCol2 = aMarkRange.aEnd.Col();
     nRow2 = aMarkRange.aEnd.Row();
-    SCTAB nTab = GetViewData().GetTabNo();
+    SCTAB nTab = GetViewData().CurrentTabForData();
 
     SfxWhichIter aIter(rSet);
     sal_uInt16 nWhich = aIter.FirstWhich();
@@ -362,7 +362,7 @@ void ScCellShell::GetCellState( SfxItemSet& rSet )
     ScDocShell* pDocShell = GetViewData().GetDocShell();
     ScDocument& rDoc = GetViewData().GetDocShell()->GetDocument();
     ScAddress aCursor( GetViewData().GetCurX(), GetViewData().GetCurY(),
-                        GetViewData().GetTabNo() );
+                        GetViewData().CurrentTabForData() );
     SfxWhichIter aIter(rSet);
     sal_uInt16 nWhich = aIter.FirstWhich();
     while ( nWhich )
@@ -402,7 +402,7 @@ void ScCellShell::GetCellState( SfxItemSet& rSet )
                 break;
             case SID_INSERT_POSTIT:
                 {
-                    ScAddress aPos( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().GetTabNo() );
+                    ScAddress aPos( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().CurrentTabForData() );
                     if( rDoc.GetNote(aPos) )
                     {
                         bDisable = true;
@@ -419,7 +419,7 @@ void ScCellShell::GetCellState( SfxItemSet& rSet )
                 break;
             case SID_EDIT_POSTIT:
                 {
-                    ScAddress aPos( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().GetTabNo() );
+                    ScAddress aPos( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().CurrentTabForData() );
                     bDisable = rDoc.GetNote(aPos) == nullptr;
                 }
                 break;
@@ -635,7 +635,7 @@ void ScCellShell::GetClipState( SfxItemSet& rSet )
     {
         SCCOL nCol = GetViewData().GetCurX();
         SCROW nRow = GetViewData().GetCurY();
-        SCTAB nTab = GetViewData().GetTabNo();
+        SCTAB nTab = GetViewData().CurrentTabForData();
         ScDocument& rDoc = GetViewData().GetDocShell()->GetDocument();
         if (!rDoc.IsBlockEditable( nTab, nCol,nRow, nCol,nRow ))
             bDisable = true;
@@ -681,7 +681,7 @@ void ScCellShell::GetHLinkState( SfxItemSet& rSet )
         ScDocument& rDoc        = rData.GetDocument();
         SCCOL       nPosX       = rData.GetCurX();
         SCROW       nPosY       = rData.GetCurY();
-        SCTAB       nTab        = rData.GetTabNo();
+        SCTAB       nTab        = rData.CurrentTabForData();
         aHLinkItem.SetName(rDoc.GetString(nPosX, nPosY, nTab));
     }
 
@@ -697,7 +697,7 @@ void ScCellShell::GetState(SfxItemSet &rSet)
     ScMarkData& rMark       = rData.GetMarkData();
     SCCOL       nPosX       = rData.GetCurX();
     SCROW       nPosY       = rData.GetCurY();
-    SCTAB       nTab        = rData.GetTabNo();
+    SCTAB       nTab        = rData.CurrentTabForData();
 
     SCTAB nTabCount = rDoc.GetTableCount();
     SCTAB nTabSelCount = rMark.GetSelectCount();
@@ -1032,7 +1032,7 @@ void ScCellShell::GetState(SfxItemSet &rSet)
             case SID_OUTLINE_MAKE:
                 {
                     if ( GetViewData().GetDocument().GetDPAtCursor( 
GetViewData().GetCurX(),
-                                            GetViewData().GetCurY(), 
GetViewData().GetTabNo() ) )
+                                            GetViewData().GetCurY(), 
GetViewData().CurrentTabForData() ) )
                     {
                         //! test for data pilot operation
                     }
@@ -1044,7 +1044,7 @@ void ScCellShell::GetState(SfxItemSet &rSet)
                 break;
             case SID_OUTLINE_SHOW:
                 if ( GetViewData().GetDocument().GetDPAtCursor( 
GetViewData().GetCurX(),
-                                        GetViewData().GetCurY(), 
GetViewData().GetTabNo() ) )
+                                        GetViewData().GetCurY(), 
GetViewData().CurrentTabForData() ) )
                 {
                     //! test for data pilot operation
                 }
@@ -1054,7 +1054,7 @@ void ScCellShell::GetState(SfxItemSet &rSet)
 
             case SID_OUTLINE_HIDE:
                 if ( GetViewData().GetDocument().GetDPAtCursor( 
GetViewData().GetCurX(),
-                                        GetViewData().GetCurY(), 
GetViewData().GetTabNo() ) )
+                                        GetViewData().GetCurY(), 
GetViewData().CurrentTabForData() ) )
                 {
                     //! test for data pilot operation
                 }
@@ -1065,7 +1065,7 @@ void ScCellShell::GetState(SfxItemSet &rSet)
             case SID_OUTLINE_REMOVE:
                 {
                     if ( GetViewData().GetDocument().GetDPAtCursor( 
GetViewData().GetCurX(),
-                                            GetViewData().GetCurY(), 
GetViewData().GetTabNo() ) )
+                                            GetViewData().GetCurY(), 
GetViewData().CurrentTabForData() ) )
                     {
                         //! test for data pilot operation
                     }
@@ -1283,7 +1283,7 @@ void ScCellShell::GetState(SfxItemSet &rSet)
 
             case SID_SPELL_DIALOG:
                 {
-                    if (rDoc.IsTabProtected(rData.GetTabNo()))
+                    if (rDoc.IsTabProtected(rData.CurrentTabForData()))
                     {
                         bool bVisible = false;
                         SfxViewFrame* pViewFrame = ( pTabViewShell ? 
&pTabViewShell->GetViewFrame() : nullptr );
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index 2323f26d1696..65b75608468c 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -491,7 +491,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
 
                         ScopedVclPtr<AbstractScDeleteContentsDlg> 
pDlg(pFact->CreateScDeleteContentsDlg(pTabViewShell->GetFrameWeld()));
                         ScDocument& rDoc = GetViewData().GetDocument();
-                        SCTAB nTab = GetViewData().GetTabNo();
+                        SCTAB nTab = GetViewData().CurrentTabForData();
                         if ( rDoc.IsTabProtected(nTab) )
                             pDlg->DisableObjects();
                         if (pDlg->Execute() == RET_OK)
@@ -932,7 +932,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                         SCROW nMergeRow = nStartRow;
                         if ( GetViewData().GetDocument().ExtendMerge(
                                 nStartCol, nStartRow, nMergeCol, nMergeRow,
-                                GetViewData().GetTabNo() ) )
+                                GetViewData().CurrentTabForData() ) )
                         {
                             if ( nFillCol >= nStartCol && nFillCol <= 
nMergeCol && nFillRow == nStartRow )
                                 nFillCol = nStartCol;
@@ -1190,7 +1190,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                 std::shared_ptr<sc::SparklineGroup> pSparklineGroup;
                 if 
(GetViewData().GetDocument().GetSparklineGroupInRange(aMarkRange, 
pSparklineGroup) && pSparklineGroup)
                 {
-                    
GetViewData().GetDocShell()->GetDocFunc().DeleteSparklineGroup(pSparklineGroup, 
GetViewData().GetTabNo());
+                    
GetViewData().GetDocShell()->GetDocFunc().DeleteSparklineGroup(pSparklineGroup, 
GetViewData().CurrentTabForData());
                 }
             }
             rReq.Done();
@@ -1202,7 +1202,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
             ScRange aRange;
             if (GetViewData().GetSimpleArea(aRange) == SC_MARK_SIMPLE)
             {
-                ScAddress aCursorAddress(GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().GetTabNo());
+                ScAddress aCursorAddress(GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().CurrentTabForData());
                 auto pSparkline = 
GetViewData().GetDocument().GetSparkline(aCursorAddress);
                 if (pSparkline)
                 {
@@ -1230,7 +1230,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
 
         case SID_OUTLINE_HIDE:
             if ( GetViewData().GetDocument().GetDPAtCursor( 
GetViewData().GetCurX(),
-                                    GetViewData().GetCurY(), 
GetViewData().GetTabNo() ) )
+                                    GetViewData().GetCurY(), 
GetViewData().CurrentTabForData() ) )
                 pTabViewShell->SetDataPilotDetails( false );
             else
                 pTabViewShell->HideMarkedOutlines();
@@ -1240,7 +1240,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
         case SID_OUTLINE_SHOW:
             {
                 ScDPObject* pDPObj = 
GetViewData().GetDocument().GetDPAtCursor( GetViewData().GetCurX(),
-                                    GetViewData().GetCurY(), 
GetViewData().GetTabNo() );
+                                    GetViewData().GetCurY(), 
GetViewData().CurrentTabForData() );
                 if ( pDPObj )
                 {
                     Sequence<sheet::DataPilotFieldFilter> aFilters;
@@ -1258,7 +1258,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                     }
                     else if ( !pDPObj->IsServiceData() &&
                                pDPObj->GetDataFieldPositionData(
-                                   ScAddress( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().GetTabNo() ),
+                                   ScAddress( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().CurrentTabForData() ),
                                    aFilters ) )
                         pTabViewShell->ShowDataPilotSourceData( *pDPObj, 
aFilters );
                     else
@@ -1276,7 +1276,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                 bool bOk = true;
 
                 if ( GetViewData().GetDocument().GetDPAtCursor( 
GetViewData().GetCurX(),
-                                        GetViewData().GetCurY(), 
GetViewData().GetTabNo() ) )
+                                        GetViewData().GetCurY(), 
GetViewData().CurrentTabForData() ) )
                 {
                     ScDPNumGroupInfo aNumInfo;
                     aNumInfo.mbEnable    = true;
@@ -1372,7 +1372,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                 bool bOk = true;
 
                 if ( GetViewData().GetDocument().GetDPAtCursor( 
GetViewData().GetCurX(),
-                                        GetViewData().GetCurY(), 
GetViewData().GetTabNo() ) )
+                                        GetViewData().GetCurY(), 
GetViewData().CurrentTabForData() ) )
                 {
                     pTabViewShell->UngroupDataPilot();
                     bOk = false;
@@ -1575,7 +1575,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                             if (!bOtherDoc)
                             {
                                 ScViewData& rData = GetViewData();
-                                if ( rData.GetMarkData().GetTableSelect( 
rData.GetTabNo() ) )
+                                if ( rData.GetMarkData().GetTableSelect( 
rData.CurrentTabForData() ) )
                                 {
                                     SCCOL nStartX, nEndX, nClipStartX, 
nClipSizeX, nRangeSizeX;
                                     SCROW nStartY, nEndY, nClipStartY, 
nClipSizeY, nRangeSizeY;
@@ -1591,7 +1591,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                                         // assume the destination as the 
current cell
                                         nStartX = nEndX = rData.GetCurX();
                                         nStartY = nEndY = rData.GetCurY();
-                                        nStartTab = rData.GetTabNo();
+                                        nStartTab = rData.CurrentTabForData();
                                     }
                                     // we now have clip- and range dimensions
                                     // the size of the destination area is the 
larger of the two
@@ -1768,7 +1768,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                         nPosX = GetViewData().GetCurX();
                         nPosY = GetViewData().GetCurY();
                     }
-                    ScAddress aCellPos(nPosX, nPosY, GetViewData().GetTabNo());
+                    ScAddress aCellPos(nPosX, nPosY, 
GetViewData().CurrentTabForData());
                     auto pObj = 
std::make_shared<ScImportExport>(GetViewData().GetDocument(), aCellPos);
                     pObj->SetOverwriting(true);
                     if (pDlg->Execute()) {
@@ -2353,13 +2353,13 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                 rData.GetMarkData().FillRangeListWithMarks(&aRangeList, false);
 
                 ScDocument& rDoc = GetViewData().GetDocument();
-                if(rDoc.IsTabProtected(rData.GetTabNo()))
+                if(rDoc.IsTabProtected(rData.CurrentTabForData()))
                 {
                     pTabViewShell->ErrorMessage( STR_ERR_CONDFORMAT_PROTECTED 
);
                     break;
                 }
 
-                ScAddress aPos(rData.GetCurX(), rData.GetCurY(), 
rData.GetTabNo());
+                ScAddress aPos(rData.GetCurX(), rData.GetCurY(), 
rData.CurrentTabForData());
                 if(aRangeList.empty())
                 {
                     aRangeList.push_back(ScRange(aPos));
@@ -2709,7 +2709,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                 const SfxStringItem& rTextItem = pReqArgs->Get( 
SID_RANGE_NOTETEXT );
 
                 //  always cursor position
-                ScAddress aPos( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().GetTabNo() );
+                ScAddress aPos( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().CurrentTabForData() );
                 pTabViewShell->SetNoteText( aPos, rTextItem.GetValue() );
                 rReq.Done();
             }
@@ -2734,7 +2734,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                         SetTabNoAndCursor( GetViewData(), aCellId );
                     }
 
-                    ScAddress aPos( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().GetTabNo() );
+                    ScAddress aPos( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().CurrentTabForData() );
                     pTabViewShell->ReplaceNote( aPos, pTextItem->GetValue(),
                                                 pAuthorItem ? 
&pAuthorItem->GetValue() : nullptr,
                                                 pDateItem ? 
&pDateItem->GetValue() : nullptr );
@@ -2750,7 +2750,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
         case FID_NOTE_VISIBLE:
             {
                 ScDocument& rDoc = GetViewData().GetDocument();
-                ScAddress aPos( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().GetTabNo() );
+                ScAddress aPos( GetViewData().GetCurX(), 
GetViewData().GetCurY(), GetViewData().CurrentTabForData() );
                 if( ScPostIt* pNote = rDoc.GetNote(aPos) )
                 {
                     bool bShow;
@@ -2784,7 +2784,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                 if (!rMark.IsMarked() && !rMark.IsMultiMarked())
                 {
                     // Check current cell
-                    ScAddress aPos( rData.GetCurX(), rData.GetCurY(), 
rData.GetTabNo() );
+                    ScAddress aPos( rData.GetCurX(), rData.GetCurY(), 
rData.CurrentTabForData() );
                     if( rDoc.GetNote(aPos) )
                     {
                         rData.GetDocShell()->GetDocFunc().ShowNote( aPos, 
bShowNote );
@@ -3034,13 +3034,13 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                 ScViewData& rData = GetViewData();
                 ScDocument& rDoc = rData.GetDocument();
 
-                if (rDoc.IsTabProtected(rData.GetTabNo()))
+                if (rDoc.IsTabProtected(rData.CurrentTabForData()))
                 {
                     pTabViewShell->ErrorMessage( STR_ERR_CONDFORMAT_PROTECTED 
);
                     break;
                 }
 
-                ScAddress aPos(rData.GetCurX(), rData.GetCurY(), 
rData.GetTabNo());
+                ScAddress aPos(rData.GetCurX(), rData.GetCurY(), 
rData.CurrentTabForData());
 
                 ScConditionalFormatList* pList = nullptr;
 
@@ -3233,7 +3233,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
         case SID_SELECT_UNPROTECTED_CELLS:
             {
                 ScViewData& rData = GetViewData();
-                SCTAB aTab = rData.GetTabNo();
+                SCTAB aTab = rData.CurrentTabForData();
                 ScMarkData& rMark = rData.GetMarkData();
                 ScDocument& rDoc = rData.GetDocument();
                 ScRangeList rRangeList;
@@ -3473,7 +3473,7 @@ void ScCellShell::ExecuteExternalSource(
             bMove = true;                       // insert/delete cells to fit 
range
         }
         else
-            aLinkRange = ScRange( rData.GetCurX(), rData.GetCurY(), 
rData.GetTabNo() );
+            aLinkRange = ScRange( rData.GetCurX(), rData.GetCurY(), 
rData.CurrentTabForData() );
 
         rData.GetDocFunc().InsertAreaLink( _rFile, _rFilter, _rOptions, 
_rSource,
                                             aLinkRange, _nRefreshDelaySeconds, 
bMove, false );
@@ -3580,7 +3580,7 @@ void ScCellShell::ExecuteDataPilotDialog()
     // ScPivot is no longer used...
     ScDPObject* pDPObj = rDoc.GetDPAtCursor(
                                 rData.GetCurX(), rData.GetCurY(),
-                                rData.GetTabNo() );
+                                rData.CurrentTabForData() );
     if ( pDPObj )   // on an existing table?
     {
         std::unique_ptr<ScDPObject> pNewDPObject;
@@ -3600,7 +3600,7 @@ void ScCellShell::ExecuteDataPilotDialog()
 
         //  output to cursor position for non-sheet data
         ScAddress aDestPos( rData.GetCurX(), rData.GetCurY(),
-                                rData.GetTabNo() );
+                                rData.CurrentTabForData() );
 
         //  first select type of source data
 
@@ -3799,7 +3799,7 @@ void ScCellShell::ExecuteSubtotals(SfxRequest& rReq)
     pDBData->GetSubTotalParam( aSubTotalParam );
 
     ScDocument& rDoc = GetViewData().GetDocument();
-    SCTAB nTab = GetViewData().GetTabNo();
+    SCTAB nTab = GetViewData().CurrentTabForData();
     if (!rDoc.GetTotalsRowBelow(nTab))
         aSubTotalParam.bSummaryBelow = false;
 
diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx
index 553ef3401f14..4296b341a4cd 100644
--- a/sc/source/ui/view/cellsh2.cxx
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -92,7 +92,7 @@ static bool lcl_GetTextToColumnsRange( const ScViewData& 
rData, ScRange& rRange,
     {
         const SCCOL nCol = rData.GetCurX();
         const SCROW nRow = rData.GetCurY();
-        const SCTAB nTab = rData.GetTabNo();
+        const SCTAB nTab = rData.CurrentTabForData();
         rRange = ScRange( nCol, nRow, nTab, nCol, nRow, nTab );
         bRet = true;
     }
@@ -131,7 +131,7 @@ static bool lcl_GetSortParam( const ScViewData& rData, 
const ScSortParam& rSortP
     ScTabViewShell* pTabViewShell   = rData.GetViewShell();
     ScDBData*   pDBData             = pTabViewShell->GetDBData();
     ScDocument& rDoc                = rData.GetDocument();
-    SCTAB nTab                      = rData.GetTabNo();
+    SCTAB nTab                      = rData.CurrentTabForData();
     ScDirection eFillDir            = DIR_TOP;
     bool  bSort                     = true;
     ScRange aExternalRange;
@@ -395,7 +395,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
                 if( lcl_GetSortParam( rData, aSortParam ) )
                 {
                     SCCOL nCol  = GetViewData().GetCurX();
-                    SCCOL nTab  = GetViewData().GetTabNo();
+                    SCCOL nTab  = GetViewData().CurrentTabForData();
                     ScDocument& rDoc = GetViewData().GetDocument();
 
                     pDBData->GetSortParam( aSortParam );
@@ -448,7 +448,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
                         ScDocument& rDoc = GetViewData().GetDocument();
 
                         pDBData->GetSortParam( aSortParam );
-                        bool bHasHeader = rDoc.HasColHeader( aSortParam.nCol1, 
aSortParam.nRow1, aSortParam.nCol2, aSortParam.nRow2, rData.GetTabNo() );
+                        bool bHasHeader = rDoc.HasColHeader( aSortParam.nCol1, 
aSortParam.nRow1, aSortParam.nCol2, aSortParam.nRow2, rData.CurrentTabForData() 
);
                         if( bHasHeader )
                             aSortParam.bHasHeader = bHasHeader;
 
@@ -518,7 +518,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
                         SfxItemSetFixed<SCITEM_SORTDATA, SCITEM_SORTDATA>  
aArgSet( GetPool() );
 
                         pDBData->GetSortParam( aSortParam );
-                        bool bHasHeader = rDoc.HasColHeader( aSortParam.nCol1, 
aSortParam.nRow1, aSortParam.nCol2, aSortParam.nRow2, rData.GetTabNo() );
+                        bool bHasHeader = rDoc.HasColHeader( aSortParam.nCol1, 
aSortParam.nRow1, aSortParam.nCol2, aSortParam.nRow2, rData.CurrentTabForData() 
);
                         if( bHasHeader )
                             aSortParam.bHasHeader = bHasHeader;
 
@@ -647,7 +647,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
                 if ( pReqArgs && (pQueryItem =
                         pReqArgs->GetItemIfSet( SCITEM_QUERYDATA )) )
                 {
-                    SCTAB nCurTab = GetViewData().GetTabNo();
+                    SCTAB nCurTab = GetViewData().CurrentTabForData();
                     SCTAB nRefTab = GetViewData().GetRefTabNo();
 
                     // If RefInput switched to a different sheet from the data 
sheet,
@@ -700,7 +700,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
                 if ( pReqArgs && (pPItem =
                         pReqArgs->GetItemIfSet( SCITEM_PIVOTDATA )) )
                 {
-                    SCTAB nCurTab = GetViewData().GetTabNo();
+                    SCTAB nCurTab = GetViewData().CurrentTabForData();
                     SCTAB nRefTab = GetViewData().GetRefTabNo();
 
                     // If RefInput switched to a different sheet from the data 
sheet,
@@ -869,7 +869,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
                     ScDocument& rDoc = GetViewData().GetDocument();
                     SCCOL nCurX = GetViewData().GetCurX();
                     SCROW nCurY = GetViewData().GetCurY();
-                    SCTAB nTab = GetViewData().GetTabNo();
+                    SCTAB nTab = GetViewData().CurrentTabForData();
                     ScAddress aCursorPos( nCurX, nCurY, nTab );
                     sal_uInt32 nIndex = rDoc.GetAttr(
                                 nCurX, nCurY, nTab, ATTR_VALIDDATA 
)->GetValue();
@@ -1113,7 +1113,7 @@ void ScCellShell::GetDBState( SfxItemSet& rSet )
     ScDocument& rDoc        = pDocSh->GetDocument();
     SCCOL       nPosX       = rData.GetCurX();
     SCROW       nPosY       = rData.GetCurY();
-    SCTAB       nTab        = rData.GetTabNo();
+    SCTAB       nTab        = rData.CurrentTabForData();
 
     bool bAutoFilter = false;
     bool bAutoFilterTested = false;
@@ -1280,7 +1280,7 @@ void ScCellShell::GetDBState( SfxItemSet& rSet )
                     {
                         nStartCol = GetViewData().GetCurX();
                         nStartRow = GetViewData().GetCurY();
-                        nStartTab = GetViewData().GetTabNo();
+                        nStartTab = GetViewData().CurrentTabForData();
                     }
 
                     ScDBData* pDBData = bSelected
diff --git a/sc/source/ui/view/cellsh3.cxx b/sc/source/ui/view/cellsh3.cxx
index 5e757f0d6f0e..ccd9cfa7557f 100644
--- a/sc/source/ui/view/cellsh3.cxx
+++ b/sc/source/ui/view/cellsh3.cxx
@@ -370,7 +370,7 @@ void ScCellShell::Execute( SfxRequest& rReq )
                         if (
                             aCursorPos.Col() == GetViewData().GetCurX() &&
                             aCursorPos.Row() == GetViewData().GetCurY() &&
-                            aCursorPos.Tab() == GetViewData().GetTabNo()
+                            aCursorPos.Tab() == 
GetViewData().CurrentTabForData()
                             )
                         {
                             SfxStringItem   aItem( SID_ENTER_STRING, aString );
@@ -544,7 +544,7 @@ void ScCellShell::Execute( SfxRequest& rReq )
             {
                 ScDocument& rDoc = GetViewData().GetDocument();
                 ScMarkData& rMark = GetViewData().GetMarkData();
-                SCTAB nTab = GetViewData().GetTabNo();
+                SCTAB nTab = GetViewData().CurrentTabForData();
 
                 if ( rDoc.IsScenario(nTab) )
                 {
-e 
... etc. - the rest is truncated

Reply via email to