Excel 如何在单独的用户窗体中操作控件?

Excel 如何在单独的用户窗体中操作控件?,excel,vba,forms,controls,Excel,Vba,Forms,Controls,我有两种形式:一种是创造性命名的UserForm1,在这里我的所有魔法都发生了;另一种是SettingsForm,用户可以在其中调整一些设置。UserForm1可以打开SettingsForm,并在将来初始化时加载任何保存的设置 我遇到的问题是在SettingsForm中保存当前打开的UserForm1时,将其更新为新选择的设置。其中一个设置是一组选项按钮中的默认选择 我已经尝试修改我在别处使用的循环来处理选项组,方法是将Me.Controls更改为[Forms]![exportForm]。控件

我有两种形式:一种是创造性命名的UserForm1,在这里我的所有魔法都发生了;另一种是SettingsForm,用户可以在其中调整一些设置。UserForm1可以打开SettingsForm,并在将来初始化时加载任何保存的设置

我遇到的问题是在SettingsForm中保存当前打开的UserForm1时,将其更新为新选择的设置。其中一个设置是一组选项按钮中的默认选择

我已经尝试修改我在别处使用的循环来处理选项组,方法是将Me.Controls更改为[Forms]![exportForm]。控件,但这会引发错误。我以前从未在另一个表单中引用过控件,所以我不太确定我在做什么。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

userform是VBA中的一个类,您可以也应该使用变量来访问它。 通常,您在代码中编写如下内容

UserForm1.Show
这将创建一个所谓的表单默认实例。但你也可以这样做

Dim frm as UserForm1
set frm = new UserForm1
frm.show
您可以使用这个变量并访问它的所有成员。如果您在表单代码中,那么我只是对实例本身的引用

因此,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

嗯,热狗,那很容易。谢谢