从Form到Class Module VBA的变量范围

时间:2011-11-01 01:16:47

标签: excel vba

我有一个Form UserForm1有两个命令按钮命令1和命令2.当按下command1时变量var = 1,如果按下命令2,var = 2。 Var是UserForm1中的全局变量。 expDate和textRecDate是UserForm1中的两个文本框

我有一个类模块clsMod,我正在尝试做这样的事情

If UserForm1.var= 1 Then 
    UserForm1.expDate.Text = SelectedDate
If UserForm1.var= 2 Then 
    UserForm1.textRecDate.Text = SelectedDate

我想将var的范围扩展到类模块。有没有办法可以做到这一点。

感谢

1 个答案:

答案 0 :(得分:1)

您实际上并不想“扩展”范围 - 您希望将范围限制到表单级别,然后使用Public方法来访问/控制表单。< / p>

例如 - 在UserForm1 ...

Private Var As Integer

Public Function GetVar() As Integer
    GetVar = Var
End Function

Public Sub SetTextRecDate(d as Date)
    textRecDate.Text = SelectedDate
End Sub

在clsMod ..

If UserForm1.GetVar = 2 Then 
    UserForm1.SetTextRecDate(SelectedDate)
    'The line above may actually want to be...
    'UserForm1.SetTextRecDate SelectedDate
    'VBA is strange about parenthesised arguments
Endif

等等

哦,如果命名不只是为了演示/示例目的,请不要养成调用按钮Command1Command2以及变量Var的习惯:D。 ..