VBA 宏编码
VBA Macro Coding
我一直在尝试制作一个宏,但我在弄清楚它时遇到了麻烦。这是它应该做的。
宏函数:当使用宏时,只有当当前选项卡不是 "Products" 选项卡并且如果当前选项卡"Products" 选项卡是否应该转到之前访问过的选项卡。
使用:假设我在 sheet 索引 3 上并使用宏——它应该激活 "Products" 选项卡,如果我再次按下它应该 return我到 sheet 索引 3.
我一直在尝试以某种方式使用 ActiveSheet.Index
和 Sheets("Products").Index
,但我认为我需要使用一些超出我当前 Visual Basics 知识的东西。在声明全局变量和在东西之间传递信息时,我也没有使用 Public 函数。
有人可以指出正确的方向或告诉我应该 use/look 做什么吗?这在 VBA 中甚至可能吗?
你要的是一个全局变量。创建一个模块并放入一个全局变量,如下所示:
Global GblPreviousSheetName As String
然后,在你所有的 sheet 中,输入以下代码:
Private Sub Worksheet_Deactivate()
GblPreviousSheetName = Me.Name
End Sub
这将在用户或代码更改时捕获 sheets 并将全局变量设置为该 sheet 名称。
然后,在您的程序中,执行以下操作:
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
请注意,如果用户在按下您的按钮之前更改 sheets,它也会记录这一点。如果您只想记录代码所做的更改,那么不要输入 "Worksheet_Deactivate" 代码,只需在代码中设置全局变量即可。
我一直在尝试制作一个宏,但我在弄清楚它时遇到了麻烦。这是它应该做的。
宏函数:当使用宏时,只有当当前选项卡不是 "Products" 选项卡并且如果当前选项卡"Products" 选项卡是否应该转到之前访问过的选项卡。
使用:假设我在 sheet 索引 3 上并使用宏——它应该激活 "Products" 选项卡,如果我再次按下它应该 return我到 sheet 索引 3.
我一直在尝试以某种方式使用 ActiveSheet.Index
和 Sheets("Products").Index
,但我认为我需要使用一些超出我当前 Visual Basics 知识的东西。在声明全局变量和在东西之间传递信息时,我也没有使用 Public 函数。
有人可以指出正确的方向或告诉我应该 use/look 做什么吗?这在 VBA 中甚至可能吗?
你要的是一个全局变量。创建一个模块并放入一个全局变量,如下所示:
Global GblPreviousSheetName As String
然后,在你所有的 sheet 中,输入以下代码:
Private Sub Worksheet_Deactivate()
GblPreviousSheetName = Me.Name
End Sub
这将在用户或代码更改时捕获 sheets 并将全局变量设置为该 sheet 名称。
然后,在您的程序中,执行以下操作:
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
请注意,如果用户在按下您的按钮之前更改 sheets,它也会记录这一点。如果您只想记录代码所做的更改,那么不要输入 "Worksheet_Deactivate" 代码,只需在代码中设置全局变量即可。