VBA在用户表单代码中使用全局变量



我使用Excel 2010 VBA。有没有一种方法可以访问在userform外部声明的全局变量中的值,或者访问userform内部的代码中的值?我的userform中的代码将全局变量返回为null-不知道为什么!

变量在ThisWorkbook模块中声明为:

Public TargetCell As Range
Public TargetCellWorksheet as Worksheet
Public CurrentValue As Long

在用户表单中,我在"更新"按钮上有以下代码:

Private Sub Update_Click()
    MsgBox ("Start of Update sub. TargetCellWorksheet =" & TargetCellWorksheet)
End Sub

msgbox为变量返回"。

希望有人能帮助我理解这一点,以及如何访问用户表单中的变量?提前感谢

对于问题本身,您声明

Public TargetCellWorksheet as Worksheet

然后尝试将其显示到MsgBox:中

MsgBox ("Start of Update sub. TargetCellWorksheet =" & TargetCellWorksheet)

您的意思是TargetCellWorksheet.Name还是TargetCellWorksheet.Range("A1").Value,因为MsgBox希望接收字符串?

但是,如果您确信您的代码,则它可能取决于变量未正确声明为Public,并且仅在模块级别。如果变量是表单本身的一部分,您可能需要向表单添加一个属性(我假设您打算使用CurrentValue,但您可以简单地将属性的类型从Long更改为Worksheet,然后使用它(:

这会进入表单的代码

Dim pCurrentValue As Long
Public Property Get CurrentValue() As Long
    CurrentValue = pCurrentValue 
End Property
Public Property Let CurrentValue (value As Long)
    pCurrentValue = value
End Property

因此,将变量从模块传递到如下形式:

在您输入表单代码之前,这将进入您的模块

Dim myForm As New yourForm
myForm.CurrentValue  = whateverYourVariableIs

因此,在表单中使用变量如下:

因此,您可以通过从表单的属性调用变量来使用变量

myVariableInTheForm = Me.CurrentValue 

然而,我必须说,奇怪的是,一个公共变量没有到达表单的堆栈。你确定你之前不是只声明变量而没有赋值吗?

相关内容

  • 没有找到相关文章

最新更新