VBA的模块、类、窗体之间传值的方法有很多,可以通过全局变量、公共属性、文件、Socket、数据库等方式来传值,比较常见是传值方式是全局变量和公共属性。本文说明ThisWorkBook与模块之间如何通过全局变量和属性来传值。
环境准备
1、打开VBA工程打开Excel,按下 Alt+F11,打开VBA工程。
2、添加一个模块右键单击Microsoft Excel对象文件夹,选择右键菜单中的插入->模块,添加一个模块。
通过全局变量来传值
1、定义全局变量定义在模块中的public变量就是全局变量,全局变量可以在任何窗体、类和模块中访问。在模块中增加如下代码,定义一个名称为g_strGlobalVariable的全局变量,再定义一个公共方法,用MsgBox显示该变量的值。Public g_strGlobalVariable As StringPublic Sub Test1() MsgBox g_strGlobalVariableEnd Sub
2、在ThisWorkBook中使用全局变量在ThisWorkBook中定义一个方法,在方法中给全局变量赋值,再调用模块中的公共方法,显示该全局变量的值。Public Sub TestGobalVariable() g_strGlobalVariable = "123" Call Test1End Sub
3、测试代码将光标定位在ThisWorkBook中的TestGobalVariable方法内,按下F8,可以启动单步调试,连续按F8,或按F5,就可以运行完成,可以看出在模块中的MsgBox显示出了在ThisWorkBook中赋值结果。
通过公共属性来传值
1、定义公共属性在ThisWorkBook中定义一个名称为P1的公共属性,在P1属性的赋值方法中显示赋值结果。Private m_strP1 As StringPub造婷用痃lic Property Get P1() As String P1 = m_strP1End PropertyPublic Property Let P1(ByVal strValue As String) m_strP1 = strValue MsgBox strValueEnd Property
2、在模块中使用ThisWorkBook中的公共属性在模块中添加如下代码,给ThisWorkBook的公共属性P1赋值。Public Sub Test2() ThisWorkbook.P1 = "456"End Sub
3、在ThisWorkBook中增加调用公共方法Test2的代码Public Sub TestGobalVariable() g_strGlobalVariable = "123" Call Test1 Call Test2End Sub
4、测试代码将光标定位在模块中的Test2方法内,按下F8,可以启动单步调试,连续按F8,或按F5,就可以运行完成,可以看出在模块中的MsgBox显示出了在模块中赋值结果。