VBA:声明/设置全局和永久变量对象以及访问其他子/函数

时间:2016-02-15 21:58:06

标签: vba declare

我想声明应该是的变量/对象:

  • 全球:我将能够在所有子/功能
  • 中使用它们
  • 永久:某些事件会触发这些潜艇,而变量仍然可供潜艇访问/使用。

使用Workbook_Open() sub不是必需的,但它是我发现的最接近构造函数的东西......我的简化结构:

ThisWorkbook

Public HS As Worksheet <-- the global variable

Private Sub WorkbookOpen()
  Set HS = ActiveWorkbook.Sheets(1) 
End Sub

Module1

Sub HistCheck()
  HS.Activate <-- Objet required
End Sub

2 个答案:

答案 0 :(得分:2)

您需要将全局变量放在模块中,而不是工作簿或工作表*。

Modeul1

Global Public HS As Worksheet

只有模块可以声明可以在整个工作表对象,子和函数中使用的变量。

将此代码放在工作簿对象

下是正确的

Workbook下:

Private Sub WorkbookOpen()
  Set HS = ActiveWorkbook.Sheets(1) 
End Sub

将这两个项目放在适当的位置,只要文档在内存中加载,您就可以在文档的任何位置放置如下代码。

Sub HistCheck()
  HS.Activate
End Sub

如果您有任何问题,请回复确切的错误消息以便进行故障排除。

答案 1 :(得分:-2)

使用工厂初始化全局对象

Factory.bas

Public Function GetHS() as WorkSheet
  GetHS = ActiveWorkBook.Sheets(1)
End Function

Module1.bas
Sub HistCheck()
    Factory.GetHS().Activate
End Sub