如何修复 运行 访问 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:
好的,问题来了: 在我的用户表单中,我有 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: