我有几个使用
的潜艇Dim wb1 As Workbook
Set s1 = wb1.Worksheets("Sheet1")
我希望将所有Dim语句移到一个新模块中并使它们成为全局模式(或者更好地将它们公布在它们当前包含在模块顶部的位置?)。
有没有办法对Set语句执行此操作,因此我不需要在每个子语句中使用相同的行?
答案 0 :(得分:1)
在通用代码模块(insert->module
)中输入以下内容:
Public wb1 As Workbook
Public s1 As Worksheet
Public s2 As Worksheet 'etc.
Public Initialized As Boolean
Sub Initialize()
Set wb1 = ActiveWorkbook
Set s1 = wb1.Sheets(1)
Set s2 = wb1.Sheets(2)
Initialized = True
End Sub
然后在ThisWorkbook
代码模块中,有:
Private Sub Workbook_Open()
Initialize
End Sub
然后(主要是作为一种安全措施,以防万一(例如运行时错误)重置项目)包括行
If Not Initialized Then Initialize
位于需要访问这些变量的每个子组的顶部。
说了这么多 - 大量使用全局变量被认为是糟糕的设计。另一方面 - 如果它们是您在整个项目中使用的变量,并且它们永远不会更改它们的引用,那么这样的事情可能会减少代码混乱。