我正在 VBA/Excel 中尝试以下功能:
Sub function_name()
button.enabled=false
Call Long_Function ' duration: 10sec
button.enabled=true
End Sub
出于某种原因,此按钮禁用不起作用(它在 excel 工作表中保持启用状态)我尝试尝试使用 DoEvents 和延迟,但没有运气。有任何想法吗?谢谢!
以下对我有用(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
不会使按钮变灰。
必须明确设置字体颜色才能使其变灰。
...我不知道您是否使用了 activex 按钮,但是当我在 Excel 中的 sheet1 中插入一个名为 CommandButton1 的 activex 按钮时,以下代码可以正常工作:
Sub test()
Sheets(1).CommandButton1.Enabled = False
End Sub
希望这可以帮助...
太好了 !!!它正在工作并轻松解决了我一天前的问题
Dim b1 As Button
Set b1 = ActiveSheet.Buttons("Button 1")
b1.Enabled = False
其他人说设置button.enabled = false
不会阻止按钮触发是正确的。但是,我发现设置button.visible = false
确实有效。visible
该按钮会消失,并且在您再次设置为之前无法单击true
。
这对我有用(Excel 2016)有一个新的 ActiveX 按钮,为你的按钮分配一个控件,你就准备好了。
Sub deactivate_buttons()
ActiveSheet.Shapes.Item("CommandButton1").ControlFormat.Enabled = False
End Sub
它将 ActiveX 按钮属性框中的“启用”属性更改为 False,并且该按钮变为非活动状态并显示为灰色。
我正在使用 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”保持原样。不要插入工作簿名称而不是“名称”。
这就是 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