我想知道如何创建一个TRUE
全局变量
不幸的是,我已经阅读了数百篇有关在Excel中创建全局变量的文章,但这些文章都没有真正解决真正的问题。
我看到的所有示例都可以在单个工作表或仅在工作簿级别上正常工作,但没有一个是真正的“全局”,因为无法从项目/任何工作表/ VBA中访问/更改该变量。解决方案。
为使这个问题明确,我想创建一个变量,该变量可以是:
Open_Workbook
过程在“工作簿”空间中设置为默认值,并且也许我只是缺少一些明显的东西,但这是一个主要问题,似乎没有人能够简洁地回答。
答案 0 :(得分:2)
只需使用自定义属性扩展ThisWorkbook
即可,而不是使用全局变量:
'ThisWorkbook
Option Explicit
Private stored As Long
Public Property Get StoredValue() As Long
StoredValue = stored
End Property
Public Property Let StoredValue(rhs As Long)
stored = rhs
End Property
Private Sub Workbook_Open()
stored = 42
End Sub
只要打开工作簿,它就会一直保持其状态,但有一个重要的警告-迫使工作簿类重新编译的任何操作都将重置其状态。 See this question了解更多信息。请注意,有一些解决方法,例如使用custom property代替后备字段的私有变量。用法与工作簿的任何其他属性一样,尽管您确实需要通过其代号来引用它:
'This code goes anywhere you want...
Public Sub Example()
MsgBox ThisWorkbook.StoredValue
ThisWorkbook.StoredValue = ThisWorkbook.StoredValue + 1
End Sub