我在“ Module1”中添加了以下函数,以确定用户形式的文本框的最大值,该文本框名为“ frmAddRecord2”,可以输入。
txtLV和txtMaxLV是“ frmAddRecord2”下的文本框。
txtMaxLV_Pass也是一个布尔变量,也放在frmAddRecord2下。在此阶段,此功能可以正常工作。
Public Function txtLV_Max() As Long
With frmAddRecord2
If .txtLV.Value >= 99 Or Not .txtMaxLV_Pass Then
txtLV_Max = 109
Else
txtLV_Max = .txtMaxLV.Value - 1
End If
End With
End Function
因为我将拥有“ frmAddRecord1”,“ frmAddRecord2”,“ frmAddRecord3”等,所以我想在frmAddRecord1或frmAddRecord2时调用以下子项 被激活。
Public Sub SetActiveUserForm(Optional UserFormName As String)
If UserFormName = "frmAddRecord1" Then
Set ActiveUserForm = frmAddRecord1
UserFormShown = True
ElseIf UserFormName = "frmAddRecord2" Then
Set ActiveUserForm = frmAddRecord2
UserFormShown = True
Else
Set ActiveUserForm = Nothing
UserFormShown = False
End If
End Sub
我想将函数重构为:
Public Function txtLV_Max() As Long
With activeuserform
If .txtLV.Value >= 99 Or Not .txtMaxLV_Pass Then
txtLV_Max = 109
Else
txtLV_Max = .txtMaxLV.Value - 1
End If
End With
End Function
但是,在“如果.txtLV.Value> = 99或不是 .txtMaxLV_Pass 然后”行发生错误。经过测试后,我在重构函数后发现无法调用txtMaxLV_Pass。如果我将txtMaxLV_Pass移到Module1下公开,它将再次正常工作。
但是我想问一下,如果我想将txtMaxLV_Pass保留在userform下,在声明userform变量时应该更改什么。请指教,我已经在网站和书籍中对此进行了研究,但仍然无法解决。谢谢您的帮助。
答案 0 :(得分:0)
全局变量ActiveUserForm
的类型为Userform
。但是,要从Userform变量访问UserForm属性,实际上它必须为Object
或Variant
类型。