2017-01-03 49 views
0

早上好,新年快樂!從Excel中的組中返回所選的單選按鈕用戶表格

我有一個Excel用戶窗體,有一些已組合在一起的無線電(選項)按鈕。

是否可以引用單選按鈕的GroupName來標識哪個被選中?

我試過使用me.myGroup,但Excel無法識別它。

如果可能,我希望能夠寫出類似於;

myVar = me.mygroup 

在Excel 2013中這可能嗎?

非常感謝

皮特

回答

1

如果你設置了GroupName屬性的選項按鈕是這樣的:

的話可以參考該物業在您想看到的控件的一個循環,控制的TypeNameOptionButton並且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 
+0

感謝這個羅賓,作品一種享受!這是一個恥辱,你必須通過所有的控制循環來做到這一點,我認爲這是很好的,只需參考組和返回選定的項目,例如0,1,2,3等 – PeteBradshaw

0

這應該讓你在正確的軌道上。通過你的控制迴路和檢查,如果他們被選中(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 
0

上午皮特,

您將需要以確定哪個按鈕一個特定的值分配給您的變量已被點擊。

嘗試像

Private Sub OptionButton1_Click() 

myVar = 1 

End Sub 

使用一個特定的值。您可以通過雙擊用戶窗體編輯器中的單選按鈕來自動訪問此子例程。這樣,稍後在代碼中,您可以引用myVar來確定腳本應接下來執行的操作,例如,

If myVar = 1 Then 
.... 
ElseIf myVar = 2 Then 
.... 
End If 

我真的不能提供更具體的建議,而不知道更多關於你的代碼是試圖做。

希望有幫助!

相關問題