VBA excel禁用button
我想要禁用像这样的VBAmacrosbutton:
ActiveSheet.Shapes("Button 1").ControlFormat.Enabled = False
我试过这个:
Set b1 = ActiveSheet.Buttons("Button 1") b1.Enabled = False
这也是:
Me.Shapes("Button 1").ControlFormat.Enabled = False
他们都没有工作。 我的button名称是正确的,因为它不会给我错误消息,所以代码是完全运行通过。
我的问题是,在这个脚本后,我可以点击该button,分配的macros是完全运行。
我的目标是,当我禁用button后,当我点击它时,什么都不应该发生。
Tahnks!
禁用窗体button(这里不说ActiveX)不会阻止分配的macros运行,也不会使button变灰。 下面的代码完全是基于从Excel获得的版本。 如果您没有为表单button指定名称,则也可以使用(button(1))。
如果Excel版本= 16或更高版本,button是“启用”,使其成为黑色,并指定我的macros,否则button是“禁用”,使其灰色,并不分配任何行动。
代码可以例如驻留在表单“Test Sheet”中的Private Sub Worksheet_Activate()
If Application.Version < 16 Then Worksheets("Test Sheet").Buttons("button_name").Font.Color = 8421504 Worksheets("Test Sheet").Buttons("button_name").OnAction = "" Else Worksheets("Test Sheet").Buttons("button_name").Font.Color = 0 Worksheets("Test Sheet").Buttons("button_name").OnAction = "'Name of the workbook.xlsm'!my_macro_name" End If
可能你正在使用ActiveXbutton。 尝试这个:
Sheets("Sheet1").CommandButton1.Enabled = False '--->change sheet name as required
编辑 : ______________________________________________________________________________
对于窗体控件button以下行
ActiveSheet.Shapes("Button 1").ControlFormat.Enabled = False
禁用button,即单击事件将不再工作,但button的外观不会改变,这给人的印象是button仍然活跃。 所以解决这个问题就是改变button文本的颜色,如下所示:
Sub disable_button_2() Dim myshape As Shape: Set myshape = ThisWorkbook.Worksheets("Sheet1").Shapes("Button 2") With myshape .ControlFormat.Enabled = False '---> Disable the button .TextFrame.Characters.Font.ColorIndex = 15 '---> Grey out button label End With End Sub
并将button恢复到原始状态写入:
Sub activate_button_2() Dim myshape As Shape: Set myshape = ThisWorkbook.Worksheets("Sheet1").Shapes("Button 2") With myshape .ControlFormat.Enabled = True '---> Enable the button .TextFrame.Characters.Font.ColorIndex = 1 '---> Highlight button label End With End Sub