在Excel / VBA中禁用/启用按钮

时间:2013-01-02 13:31:17

标签: excel vba excel-vba

我在VBA / Excel中尝试以下功能:

Sub function_name()
  button.enabled=false
  Call Long_Function       ' duration: 10sec
  button.enabled=true
End Sub

出于某种原因,此按钮禁用不起作用(它在Excel工作表中保持启用状态) 我尝试过尝试DoEvents和延迟,但没有运气。 有任何想法吗? 谢谢!

7 个答案:

答案 0 :(得分:14)

以下适用于我(Excel 2010)

Dim b1 As Button

Set b1 = ActiveSheet.Buttons("Button 1")

b1.Font.ColorIndex = 15
b1.Enabled = False
Application.Cursor = xlWait
Call aLongAction
b1.Enabled = True
b1.Font.ColorIndex = 1
Application.Cursor = xlDefault
  

请注意,.enabled = False不会使按钮变灰。

必须明确设置字体颜色才能使其变灰。

答案 1 :(得分:2)

...我不知道你是否使用了activex按钮,但当我在Excel中的一个名为CommandButton1的sheet1中插入一个activex按钮时,下面的代码工作正常:

Sub test()

   Sheets(1).CommandButton1.Enabled = False

End Sub

希望这会有所帮助......

答案 2 :(得分:1)

太好了!!!它正在工作并轻松解决了我一天的问题

Dim b1 As Button

Set b1 = ActiveSheet.Buttons("Button 1")


b1.Enabled = False

答案 3 :(得分:1)

这对我(Excel 2016)有一个新的ActiveX按钮,为你分配一个控件按钮,你已经完成了设置。

Sub deactivate_buttons()

     ActiveSheet.Shapes.Item("CommandButton1").ControlFormat.Enabled = False

End Sub

它将“ActiveX按钮属性”框中的“已启用”属性更改为False,该按钮变为非活动状态并显示为灰色。

答案 4 :(得分:1)

其他人的正确说法是设置button.enabled = false不会阻止按钮触发。但是,我发现设置button.visible = false确实可以。该按钮会消失并且无法单击,直到您再次将visible设置为true

答案 5 :(得分:0)

我使用的是excel 2010及以下版本的VBA代码,对于“表单按钮”来说效果很好。 它将从按钮中删除分配的宏,并在下一个命令中分配。

要禁用:

ActiveSheet.Shapes("Button Name").OnAction = Empty
ActiveSheet.Shapes("Button Name").DrawingObject.Font.ColorIndex = 16

要启用:

ActiveSheet.Shapes("Button Name").OnAction = ActiveWorkbook.Name & "!Macro function Name with _Click"
ActiveSheet.Shapes("Button Name").DrawingObject.Font.ColorIndex = 1

请注意“ ActiveWorkbook.Name”保持原样。不要插入工作簿名称而不是“名称”。

答案 6 :(得分:-1)

这就是iDevelop试图说的Enabled Property

所以你一直在使用enabled,因为你的初始帖子是enable ..

您可以尝试以下方法:

Sub disenable()
  sheets(1).button1.enabled=false
  DoEvents
  Application.ScreenUpdating = True

  For i = 1 To 10
    Application.Wait (Now + TimeValue("0:00:1"))
  Next i

  sheets(1).button1.enabled = False
End Sub
相关问题