2012-07-03 125 views
1

我遇到了vba表單中複選框的onclick事件問題。基本上我想要做的是將特定選項卡上所有複選框的值設置爲與主複選框相同的值。在這種情況下,它是'Use Online'標題複選框(在代碼中爲online_toggle),一旦點擊,它應該在'on'或'off'選項卡上切換其他複選框。目前,我有以下的代碼,但它不斷產生錯誤的「對於每一個OBJ在online.OLEObjects」根據主複選框選項切換選項卡中的複選框

My user form

Private Sub online_toggle_Click() 

Dim ctl As Control 

For Each ctl In Me.MultiPage1.Pages(6).Controls 

    If TypeOf ctl Is MSForms.CheckBox Then 
     If ctl.GroupName = "online_variants" Then 
     If ctl.Name <> "online_toggle" Then 
      ctl.Value = online_toggle.Value 
     End If 
     End If 
    End If 

Next ctl 

End Sub 

注:在線是所有複選框所在的選項卡的名稱。如果它可以幫助受主複選框的複選框都被歸爲online_variants

乾杯,

傑森

+0

這是您正在使用的多頁面還是Tabstrip? –

+0

我認爲這是一個標籤條。如果有幫助,那麼需要更改的複選框以名稱online_variants分組。 – jezzipin

+0

在這種情況下,我認爲這是一個多頁面。在設計時,在Tabstrip中,Tab1中的控件在Tab2中可見,而在Multipage中,當您在標籤之間切換時,您可以看到獨立的控件... –

回答

1

在Mutipage頁碼從0開始,所以如果你想指的複選框中Online標籤(第7個標籤)然後使用這個

Dim ctl As Control 

For Each ctl In Me.MultiPage1.Pages(6).Controls 
    If TypeOf ctl Is MSForms.CheckBox Then 
     '~~> Your code here 
     Debug.Print ctl.Name 
    End If 
Next 
+0

如果我理解正確的話,這是現在我已經在那裏代碼:Private Sub online_toggle_Click() 昏暗的CTL作爲控制 對於每個CTL在Me.MultiPage1.Pages(6).Controls 如果TypeOf運算CTL是MSForms.CheckBox然後 如果ctl.Name <> 「online_toggle」 然後 ctl.Object.Value = online.online_toggle.Value 結束如果 結束如果 接下來CTL 結束Sub - 這不工作,雖然。 – jezzipin

+1

'ctl.Object.Value = online.online_toggle.Value'不正確。您可以使用'Ctl.Value',而不是直接使用複選框名稱,例如'Ctl.Value = online_toggle.Value' –

+0

這很棒。現在它已經解決了這個問題,因爲我將在選項卡上有多個主複選框,我只希望那些分配給指定組的用戶受到切換的影響。我猜這只是另一個IF條件,以某種方式引用組? – jezzipin