VBA 宏编码

VBA Macro Coding

我一直在尝试制作一个宏,但我在弄清楚它时遇到了麻烦。这是它应该做的。

宏函数:当使用宏时,只有当当前选项卡不是 "Products" 选项卡并且如果当前选项卡"Products" 选项卡是否应该转到之前访问过的选项卡。

使用:假设我在 sheet 索引 3 上并使用宏——它应该激活 "Products" 选项卡,如果我再次按下它应该 return我到 sheet 索引 3.

我一直在尝试以某种方式使用 ActiveSheet.IndexSheets("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" 代码,只需在代码中设置全局变量即可。