我有两种形式:一种是创造性地命名为UserForm1
,其中发生了我所有的魔术,另外两种是SettingsForm
,用户可以在其中调整某些设置。 UserForm1
可以打开SettingsForm
,并在以后初始化时加载所有保存的设置。
我遇到的问题是将当前打开的UserForm1
保存到SettingsForm
时将它们更新为新选择的设置。这些设置之一是一组选项按钮中的默认选择。
我尝试通过将Me.Controls
更改为[Forms]![exportForm].Controls
来修改我在其他地方用于处理选项组的循环,但这会引发错误。我以前从未以其他形式引用过控件,所以我不确定自己在做什么(阅读:我完全不了解)。 (defBGU
是先前代码中定义的字符串)
Dim opt As Control
For Each opt In [Forms]![exportForm].Controls
If TypeName(opt) = "OptionButton" Then
If opt.Name = defBGU Then
opt.Value = True
End If
End If
Next
答案 0 :(得分:1)
用户表单是VBA中的一个类,您可以(并且应该)使用变量来访问它。 通常,您用
之类的代码编写代码UserForm1.Show
,这将创建表单的所谓的默认实例。但是你也可以做
Dim frm as UserForm1
set frm = new UserForm1
frm.show
您可以使用此变量并访问其所有成员(Me
只是对实例本身的引用,如果您在表单代码中)。
因此,UserForm1中的部分代码看起来像
Dim frmSettings As SettingsForm ' Declare a variable for the setting form
Private Sub CommandButton1_Click()
' Create a new instance of the setting form
If frmSettings Is Nothing Then Set frmSettings = New SettingsForm
' Do some manipulations and show it
With frmSettings
.Caption = "Greetings from " & Me.Name
.Label1.Caption = "I was set by " & Me.Name
.TextBox1.Text = "Me too..."
.Show
End With
End Sub