如何修复 运行 访问 Excel VBA 中的 CheckBox 值时的时间错误 424?

How to fix run time error 424 when accessing the value of a CheckBox in Excel VBA?

好的,问题来了: 在我的用户表单中,我有 2 个复选框。我希望能够使用复选框的值来执行某项工作。


示例:

Sub main()
    UserForm1.Show
    If UserForm1.CheckBox1.Value=True Then
        MsgBox("Awesome")
    End If
End Sub

现在我的问题是它一直给我 运行 时间错误 424。 谁能帮我这个? 非常感谢您的帮助。 谢谢。


更新:

Sub main()
    UserForm1.Show
    If UserForm1.CheckBox1.Value=True Then
        Worksheets(1).Activate
        If UserForm1.CheckBox1.Value=True Then
            MsgBox("Awesome")
        End If
    End If
End Sub

好的,现在它在 worksheets(1).Activate 后停止。 非常感谢您的帮助。 谢谢。

解决方案:这段代码对我有用:

Sub main()
    If UserForm1.CheckBox1.Value = True Then
        MsgBox "Checkbox is checked"
    End If
End Sub

解释:错误出现是因为你没有指定CheckBox1属于哪个对象(在本例中为:哪个表单)。因此,我在 If 语句中添加了 UserForm1.。其次,CheckBox1.Value 是一个布尔值 属性,即选中时该值为 True,而不是 1.

附加信息:请注意 运行在 UserForm1.Show 之后的 If 子句(就像您在示例中所做的那样)将如果您打算 select .Show 命令后的复选框,则永远不会工作。在您甚至没有时间 select 复选框之前,将显示表单并且 If 子句是 运行。所以我的答案中的代码应该转到另一个 Sub,例如当您单击表单中的按钮时 运行(上面是否有某种 "OK" 或 "Close" 按钮?如果是,双击宏编辑器中的按钮并添加那里的代码)。如果您需要更多上下文,请告诉我。

更新(按照评论中的要求):这是我的:

Sub a()
    ' This launches the form
    ' I added this to a normal Module in the
    ' VBA editor
    UserForm1.Show
End Sub

Private Sub CommandButton1_Click()
    ' This is what is executed when clicking
    ' the "OK" button
    ' To add this code, add a button to your
    ' form, double click it and paste this code
    If UserForm1.CheckBox1.Value = True Then
        Worksheets(1).Activate
        MsgBox "Awesome"
    End If
    ' Update 2: Close form but keep
    ' Checkbox1.Value available
    Userform1.Hide
End Sub

运行 a(来自 "Developer" 选项卡上的 "Macros" 对话)给我:

选中复选框并单击“确定”returns this: