我一直在尝试制作一个宏,但我很难搞清楚它。这是它应该做的。
宏功能:当使用宏时,只有当前选项卡不是“产品”选项卡时才会切换到名为“产品”的工作表,如果当前选项卡是“产品”选项卡,则应该转到以前访问过的标签。
使用:假设我在表索引3并使用宏 - 它应该激活“产品”选项卡,如果我再次按它,它应该返回到表索引3。
我一直在尝试以某种方式使用ActiveSheet.Index
和Sheets("Products").Index
,但我认为我需要使用超出我目前Visual Basic知识的东西。在声明全局变量和在很多东西之间传递信息时,我没有使用Public函数。
有人能指出我正确的方向还是告诉我应该使用/研究什么?这甚至可以在VBA中使用吗?
答案 0 :(得分:1)
你想要的是一个全局变量。创建一个模块并放入一个像这样的全局变量:
Global GblPreviousSheetName As String
然后,在所有工作表中,输入以下代码:
Private Sub Worksheet_Deactivate()
GblPreviousSheetName = Me.Name
End Sub
只要用户或代码更改工作表并将Global变量设置为该工作表名称,就会捕获此信息。
然后,在您的程序中,执行以下操作:
Public Sub Test()
If GblPreviousSheetName = "" Then
GblPreviousSheetName = "Sheet1" 'Put default sheet here (for first time workbook opens)
End If
'Run whatever code you want.
ActiveWorkbook.Sheets(GblPreviousSheetName).Activate
End Sub
请注意,如果用户在按下按钮之前更改了工作表,它也会记录下来。如果您只想记录代码所做的更改,那么只需在代码中设置全局变量,而不是放入“Worksheet_Deactivate”代码。