早上好,新年快樂!從Excel中的組中返回所選的單選按鈕用戶表格
我有一個Excel用戶窗體,有一些已組合在一起的無線電(選項)按鈕。
是否可以引用單選按鈕的GroupName來標識哪個被選中?
我試過使用me.myGroup
,但Excel無法識別它。
如果可能,我希望能夠寫出類似於;
myVar = me.mygroup
在Excel 2013中這可能嗎?
非常感謝
皮特
早上好,新年快樂!從Excel中的組中返回所選的單選按鈕用戶表格
我有一個Excel用戶窗體,有一些已組合在一起的無線電(選項)按鈕。
是否可以引用單選按鈕的GroupName來標識哪個被選中?
我試過使用me.myGroup
,但Excel無法識別它。
如果可能,我希望能夠寫出類似於;
myVar = me.mygroup
在Excel 2013中這可能嗎?
非常感謝
皮特
如果你設置了GroupName
屬性的選項按鈕是這樣的:
的話可以參考該物業在您想看到的控件的一個循環,控制的TypeName
是OptionButton
並且GroupName
匹配:
Option Explicit
Private Sub CommandButton2_Click()
Dim opt As MSforms.OptionButton
Set opt = GetSelectedOptionByGroupName("MyGroup")
If Not opt Is Nothing Then
MsgBox opt.Name
Else
MsgBox "No option selected"
End If
End Sub
Function GetSelectedOptionByGroupName(strGroupName As String) As MSforms.OptionButton
Dim ctrl As Control
Dim opt As MSforms.OptionButton
'initialise
Set ctrl = Nothing
Set GetSelectedOptionByGroupName = Nothing
'loop controls looking for option button that is
'both true and part of input GroupName
For Each ctrl In Me.Controls
If TypeName(ctrl) = "OptionButton" Then
Set opt = ctrl
If opt.Value Then
Set GetSelectedOptionByGroupName = opt
Exit For
End If
End If
Next ctrl
End Function
這應該讓你在正確的軌道上。通過你的控制迴路和檢查,如果他們被選中(TRUE
在單選按鈕的情況下)
Private Sub CommandButton1_Click()
For Each Control In UserForm1.Controls
If Control.Value = True Then
MsgBox Control.Name
'MsgBox Control.Tag
End If
Next Control
End Sub
上午皮特,
您將需要以確定哪個按鈕一個特定的值分配給您的變量已被點擊。
嘗試像
Private Sub OptionButton1_Click()
myVar = 1
End Sub
使用一個特定的值。您可以通過雙擊用戶窗體編輯器中的單選按鈕來自動訪問此子例程。這樣,稍後在代碼中,您可以引用myVar來確定腳本應接下來執行的操作,例如,
If myVar = 1 Then
....
ElseIf myVar = 2 Then
....
End If
等
我真的不能提供更具體的建議,而不知道更多關於你的代碼是試圖做。
希望有幫助!
感謝這個羅賓,作品一種享受!這是一個恥辱,你必須通過所有的控制循環來做到這一點,我認爲這是很好的,只需參考組和返回選定的項目,例如0,1,2,3等 – PeteBradshaw