VBA宏编码

时间:2015-06-19 17:12:56

标签: excel vba excel-vba worksheet

我一直在尝试制作一个宏,但我很难搞清楚它。这是它应该做的。

宏功能:当使用宏时,只有当前选项卡不是“产品”选项卡时才会切换到名为“产品”的工作表,如果当前选项卡是“产品”选项卡,则应该转到以前访问过的标签。

使用:假设我在表索引3并使用宏 - 它应该激活“产品”选项卡,如果我再次按它,​​它应该返回到表索引3。

我一直在尝试以某种方式使用ActiveSheet.IndexSheets("Products").Index,但我认为我需要使用超出我目前Visual Basic知识的东西。在声明全局变量和在很多东西之间传递信息时,我没有使用Public函数。

有人能指出我正确的方向还是告诉我应该使用/研究什么?这甚至可以在VBA中使用吗?

1 个答案:

答案 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”代码。

相关问题