VBA中ThisWorkbook内的常量能否在用户窗体、工作表及模块中引用?
如何在VBA的其他模块中引用ThisWorkbook里定义的常量
当然可以引用!你之前失败的原因很简单:在ThisWorkbook这类对象模块里定义的常量,默认是Private(私有)的,只能在本模块内部使用。只要把它改成公共常量,就能在用户窗体、工作表、标准模块里轻松调用了。
步骤1:修改ThisWorkbook里的常量定义
打开ThisWorkbook的代码窗口,把原来的常量定义前面加上Public关键字:
Public Const pass = "passwordkey"
这样就把这个常量变成了整个VBA项目都能访问的公共常量。
步骤2:在其他模块中引用这个常量
不管是用户窗体、其他工作表代码,还是标准模块,都需要通过ThisWorkbook这个对象来引用它,具体写法如下:
- 在标准模块里:
Sub TestPass() MsgBox ThisWorkbook.pass ' 弹出显示passwordkey的对话框 End Sub - 在用户窗体代码里(比如按钮点击事件):
Private Sub CommandButton1_Click() If TextBox1.Text = ThisWorkbook.pass Then MsgBox "密码正确!" End If End Sub - 在其他工作表代码里(比如工作表激活事件):
Private Sub Worksheet_Activate() Me.Range("A1").Value = ThisWorkbook.pass End Sub
注意事项
- 如果你在标准模块里也定义了同名的
pass常量,那么标准模块里的代码会优先使用自己的常量,这时候要注意命名冲突,尽量给常量起更独特的名字(比如wb_PasswordKey)。 - 对象模块(ThisWorkbook、工作表、窗体)里的公共成员(包括常量、变量、过程)都必须通过对象实例来访问,不能直接写
pass,必须加上ThisWorkbook.前缀,否则VBA会找不到这个常量。
内容的提问来源于stack exchange,提问作者mitchmitch24
相关产品推荐
相关产品推荐

