【发布时间】:2020-09-14 00:43:08
【问题描述】:
我有一个已分配给名为“运行报告”的按钮的 vba 代码。有一些带有复选框的说明,我要做的是只有在所有复选框都被勾选时才启用按钮。我尝试了类似下面的方法,但不知何故它不起作用。声明似乎有问题。我使用的是 ms office 2013 版本。
Sub buttonenable()
Dim B1 as Button
Dim C1 as Checkbox
Dim C2 as Checkbox
Dim C3 as Checkbox
Set B1 = Thisworkbook.Sheets("Home").Button("Run report")
Set C1 = Thisworkbook.Sheets("Home").Checkbox("Checkbox1")
Set C2 = Thisworkbook.Sheets("Home").Checkbox("Checkbox2")
Set C3 = Thisworkbook.Sheets("Home").Checkbox("Checkbox3")
IF C1 = True and C2 = True and C3 = True Then
B1.Enable = True
Else
B1.enable = False
End If
End Sub()
【问题讨论】:
-
请在代码顶部使用“选项显式”。更好的是勾选工具>选项>编辑器中的所有框。这将显示您的声明和一些代码中的错误,例如 Button、Checkbox 的大写以及 thisworkbook 的拼写错误。如果您以小写形式键入它并且它更正为大写,则 vba 已“识别”它。
-
我不在电脑前我可以试试这个,但我相信“启用”是您所追求的按钮属性。进入“设计模式”,右键单击按钮,然后单击“属性”以检查它并查看其他属性(另外,确保那里的“名称”与代码中的按钮名称匹配。)我可以看到它不是在您的代码末尾“识别”。
-
此外,按钮和复选框并不像您的代码中那么简单......从内存中它们是形状或表单,具体取决于它们是 ActiveX 还是表单控件。
-
@Stax 就在上面。
YourControl.Enabled是正确的语法,它是对属性的不同访问,具体取决于它们是表单控件还是 ActiveX。