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