3

我有一对按钮(“继续”和“后退”)可以移动用户前进和后退工作表。

前进按钮似乎能够毫无困难地通过可见的工作表向前移动,很好地跳过隐藏的工作表。

但是,如果活动工作表和之前的可见工作表之间存在隐藏工作表,则后退按钮无法执行任何操作。

我很困惑,因为两者的代码实际上是相同的:

前锋:(工作正常)

Sub MoveNext()
On Error Resume Next
Sheets(ActiveSheet.Index + 1).Activate
If Err.Number <> 0 Then Sheets(1).Activate
End Sub

返回:(在隐藏表失败)

Sub MoveBack()
On Error Resume Next
Sheets(ActiveSheet.Index - 1).Activate
If Err.Number <> 0 Then Sheets(1).Activate
End Sub

每个按钮都根据需要绑定到上面的 subs。

4

1 回答 1

3

有趣的!看起来如果您尝试激活隐藏的工作表,它默认为下一个最高索引。所以这就是为什么它会上升,但不会下降。我写了一个程序来检查是否有一个较低的可见工作表,如果有,移动到它:

Sub MoveBack()
Dim PrevVisibleIndex As Long

PrevVisibleIndex = ActiveSheet.Index
With ThisWorkbook
    Do
        PrevVisibleIndex = Application.WorksheetFunction.Max(PrevVisibleIndex - 1, 1)
    Loop Until .Worksheets(PrevVisibleIndex).Visible = True Or PrevVisibleIndex = 1
    .Worksheets(PrevVisibleIndex).Activate
End With
End Sub
于 2013-05-15T00:50:48.353 回答