我的电子表格中有3个不同的表单按钮。我想在按下时禁用其中的2个。那可能吗?Excel 2010 - 禁用按钮
在C#中按钮可以是真或假,但我无法在VBA Excel 2010中找到任何这样的示例?
在此先感谢
我的电子表格中有3个不同的表单按钮。我想在按下时禁用其中的2个。那可能吗?Excel 2010 - 禁用按钮
在C#中按钮可以是真或假,但我无法在VBA Excel 2010中找到任何这样的示例?
在此先感谢
您无法禁用表单按钮。如果你想使用该功能,然后使用ActiveX按钮。
但是还有一个选择。创建2个公共布尔变量,然后在按钮1的单击事件中将变量设置为True或False。根据布尔变量,其他2个按钮将运行其代码或不运行。例如
Option Explicit
Dim enableB2 As Boolean, enableB3 As Boolean
Sub Button1_Click()
If enableB2 = False Then
enableB2 = True: enableB3 = True
Else
enableB2 = False: enableB3 = False
End If
'
'~~> Rest of the code
'
End Sub
Sub Button2_Click()
If enableB2 = True Then
'
MsgBox "Hello You clicked Button 2"
'
End If
End Sub
Sub Button3_Click()
If enableB3 = True Then
'
MsgBox "Hello You clicked Button 3"
'
End If
End Sub
我只是想提供任何达不到这个来自谷歌的替代方法(即宁愿不使用ActiveX按钮),而不是使用全局Boolean
变量,您可以灰色的按钮上的文本时,被禁用,并在运行宏之前检查分配给按钮的宏中的文本颜色。
例如,如果您有以下子:
Public Sub SetFormButtonEnabled(ByVal oWks As Object, ByVal sName As String, ByVal bValue As Boolean) As Boolean
If blnValue Then
' Enabled: black text
oWks.Shapes(sName).TextFrame.Characters.Font.ColorIndex = 1
Else
' Disabled: grey text
oWks.Shapes(sName).TextFrame.Characters.Font.ColorIndex = 16
End If
End Sub
和功能:
Public Function GetFormButtonEnabled(ByVal oWks As Object, ByVal sName As String) As Boolean
' Enabled if text colour is black, otherwise it is disabled
GetFormButtonEnabled = (oWks.Shapes(sName).TextFrame.Characters.Font.ColorIndex = 1)
End Function
,那么你可以使用SetFormButtonEnabled
功能以同样的方式,你会使用ActiveX按钮的button.Enabled
属性,并使用GetFormButtonEnabled
在执行单击宏之前检查按钮是否已启用。
要使用这些回答最初的问题,有一个名为btnTest1-3
按钮(我创建名字后有这种约定的按钮,但Button 1-3
也将正常工作),然后单击宏btnTest1_Click
(再次mimicing该ActiveX惯例,但可以命名为任何东西):
Public Sub btnTest1_Click()
If Not GetFormButtonEnabled(Me, "btnTest1") Then Exit Sub
SetFormButtonEnabled Me, "btnTest2", False
SetFormButtonEnabled Me, "btnTest3", False
' Do some work...
End Sub
Public Sub btnTest2_Click()
If Not GetFormButtonEnabled(Me, "btnTest2") Then Exit Sub
' Do some work...
End Sub
Public Sub btnTest3_Click()
If Not GetFormButtonEnabled(Me, "btnTest3") Then Exit Sub
' Do some work...
End Sub
感谢您的快速回答。为什么我在VBA代码中做了一些事情:S – Kano
为什么?我喜欢任何有“VB”的东西吗? ;) –
因为我刚刚在几天内使用过VBA,但还不知道所有的事情。我知道很多来自C#的东西,但我不能“移植”所有东西。 – Kano