2016-12-06 84 views
-1

我有一組用戶窗體與一組單選按鈕。 O當我點擊繼續按鈕時,我希望它遍歷每個按鈕。用戶窗體上的VBA循環組的按鈕

我原以爲會有一些我可以用for循環做的事情,比如'For Each Button in group'!

有沒有辦法做到這一點?

編輯***********

我已決定通過陣列推動按鈕成陣列和循環。我發現這樣更合適,因爲它允許訪問所有的OptionButton屬性,而不是通過Controls循環。

如果有更好的方法來做到這一點,我仍然想知道。我想在下面Doug的答案做的是:

'... within For Each Loop 
    If cCont.GroupName = "GroupB" Then 
     'blah blah blah 
    End If 

這不起作用的組名不可用在被宣佈爲「控制」 CCONT。

再次感謝您的回覆!

+1

是的,有很多方法可以做到這一點。你能用你試過的代碼編輯問題嗎? – Comintern

回答

1
Private Sub UserForm_Initialize() 
      Dim cCont As Control 

      For Each cCont In Me.Controls 
       If TypeName(cCont) = "CommandButton" Or TypeName(cCont) = "OptionButton" Then 
        cCont.Caption = "Boobaloobie" 
       End If 
      Next cCont 

好的,這正是你要找的。對我的作品完美

+0

「控制」是關鍵!這就是我一直在尋找的!我一直在尋找GroupName等,並沒有發現任何東西!我想我可以投入一個'和'的條件來檢查GroupName是否匹配太對了? – Mike

+0

它看起來像你很好,你的方式來解決它:) –

+0

我很新使用userForms(如果你不能猜測),我認爲我很好,我的方式來解決它,但它似乎不然。 如果我將cCont聲明爲「Control」,則無法訪問GroupName屬性。 如果我將cCont聲明爲「OptionButton」(因爲這是我想檢查的),那麼它會在我的For循環中嘗試循環Me.Controls時出現類型不匹配。 我不是想讓你知道該怎麼做,但我需要一些指導?! – Mike

1

我搜索谷歌爲「VBA用戶窗體獲得控制」,這是頂級的結果:

http://www.ozgrid.com/VBA/control-loop.htm

Dim control As Control 
For Each control In Me.Controls 

    If TypeName(control) = "RadioButton" Then 

     ' do stuff 
    End If 

Next 
+0

擊敗你:P –

+0

@戴謝謝你的回答順便說一句,我必須標記道格是正確的,因爲他是第一個在那裏。 – Mike