9

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

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

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

4

7 回答 7

21

以下对我有用(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不会使按钮变灰。

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

于 2013-01-02T15:01:41.467 回答
3

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

Sub test()

   Sheets(1).CommandButton1.Enabled = False

End Sub

希望这可以帮助...

于 2013-01-02T13:37:01.500 回答
2

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

Dim b1 As Button

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


b1.Enabled = False
于 2014-04-22T07:14:53.883 回答
2

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

于 2019-08-08T17:44:53.870 回答
1

这对我有用(Excel 2016)有一个新的 ActiveX 按钮,为你的按钮分配一个控件,你就准备好了。

Sub deactivate_buttons()

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

End Sub

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

于 2017-07-21T22:08:46.813 回答
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”保持原样。不要插入工作簿名称而不是“名称”。

于 2020-11-03T19:47:58.260 回答
-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
于 2013-01-02T13:38:24.680 回答