我的電子表格中有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