每帧超过一个 Select 个所有复选框

more than one Select All Checkboxes for each frame

以下 Userform 有 4(四)Select All Check-boxes.

  1. Select东欧的 AllE

  2. Select中东和非洲的 AllA

  3. Select拉丁美洲和加勒比地区的 AllL

  4. SA Select 所有地区(工作)

只有第四个工作正常

以下是每个复选框的代码

Private Sub SA_Click() ' this one is working Correctly
Dim ctl As Control
Dim j As Long
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.CheckBox Then
    If Me.Controls(ctl.Name).Value = True Then

    Me.Bulgaria.Value = True
    Me.Croatia.Value = True
    Me.Croatia.Value = True
    Me.czechrepublic.Value = True
    Me.Estonia.Value = True
    Me.Hungary.Value = True
    Me.Latvia.Value = True
    Me.Lithuania.Value = True
    Me.Macedonia.Value = True
    Me.Poland.Value = True
    Me.Romania.Value = True
    Me.Russia.Value = True
    Me.Ukraine.Value = True

    Me.Bahrain.Value = True
    Me.CoteD.Value = True
    Me.Egypt.Value = True
    Me.Ghana.Value = True
    Me.Iraq.Value = True
    Me.Kenya.Value = True
    Me.Kuwait.Value = True
    Me.Morocco.Value = True
    Me.Namibia.Value = True
    Me.Nigeria.Value = True
    Me.Oman.Value = True
    Me.Palestine.Value = True
    Me.Qatar.Value = True
    Me.Rwanda.Value = True
    Me.SaudiArabia.Value = True
    Me.Turkey.Value = True
    Me.Uganda.Value = True
    Me.UAE.Value = True
    Me.Zimbabwe.Value = True

    Me.Chile.Value = True
    Me.Mexico.Value = True
    Me.Colombia.Value = True

    Else
    Me.Bulgaria.Value = False
    Me.Croatia.Value = False
    Me.Croatia.Value = False
    Me.czechrepublic.Value = False
    Me.Estonia.Value = False
    Me.Hungary.Value = False
    Me.Latvia.Value = False
    Me.Lithuania.Value = False
    Me.Macedonia.Value = False
    Me.Poland.Value = False
    Me.Romania.Value = False
    Me.Russia.Value = False
    Me.Ukraine.Value = False

    Me.Bahrain.Value = False
    Me.CoteD.Value = False
    Me.Egypt.Value = False
    Me.Ghana.Value = False
    Me.Iraq.Value = False
    Me.Kenya.Value = False
    Me.Kuwait.Value = False
    Me.Morocco.Value = False
    Me.Namibia.Value = False
    Me.Nigeria.Value = False
    Me.Oman.Value = False
    Me.Palestine.Value = False
    Me.Qatar.Value = False
    Me.Rwanda.Value = False
    Me.SaudiArabia.Value = False
    Me.Turkey.Value = False
    Me.Uganda.Value = False
    Me.UAE.Value = False
    Me.Zimbabwe.Value = False
    End If
End If
Next
End Sub

Private Sub SelectallE_Click() ' this one is not working Correctly
Dim ctl As Control
Dim j As Long
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.CheckBox Then
    If Me.Controls(ctl.Name).Value = True Then
    Me.Bulgaria.Value = True
    Me.Croatia.Value = True
    Me.Croatia.Value = True
    Me.czechrepublic.Value = True
    Me.Estonia.Value = True
    Me.Hungary.Value = True
    Me.Latvia.Value = True
    Me.Lithuania.Value = True
    Me.Macedonia.Value = True
    Me.Poland.Value = True
    Me.Romania.Value = True
    Me.Russia.Value = True
    Me.Ukraine.Value = True
    Else
    Me.Bulgaria.Value = False
    Me.Croatia.Value = False
    Me.Croatia.Value = False
    Me.czechrepublic.Value = False
    Me.Estonia.Value = False
    Me.Hungary.Value = False
    Me.Latvia.Value = False
    Me.Lithuania.Value = False
    Me.Macedonia.Value = False
    Me.Poland.Value = False
    Me.Romania.Value = False
    Me.Russia.Value = False
    Me.Ukraine.Value = False

    Me.Chile.Value = False
    Me.Mexico.Value = False
    Me.Colombia.Value = False

    End If
 End If
Next
End Sub

Private Sub SelectAllA_Click() ' this one is not working Correctly
Dim ctl As Control
Dim j As Long
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.CheckBox Then
    If Me.Controls(ctl.Name).Value = True Then
    Me.Bahrain.Value = True
    Me.CoteD.Value = True
    Me.Egypt.Value = True
    Me.Ghana.Value = True
    Me.Iraq.Value = True
    Me.Kenya.Value = True
    Me.Kuwait.Value = True
    Me.Morocco.Value = True
    Me.Namibia.Value = True
    Me.Nigeria.Value = True
    Me.Oman.Value = True
    Me.Palestine.Value = True
    Me.Qatar.Value = True
    Me.Rwanda.Value = True
    Me.SaudiArabia.Value = True
    Me.Turkey.Value = True
    Me.Uganda.Value = True
    Me.UAE.Value = True
    Me.Zimbabwe.Value = True
    Else
    Me.Bahrain.Value = False
    Me.CoteD.Value = False
    Me.Egypt.Value = False
    Me.Ghana.Value = False
    Me.Iraq.Value = False
    Me.Kenya.Value = False
    Me.Kuwait.Value = False
    Me.Morocco.Value = False
    Me.Namibia.Value = False
    Me.Nigeria.Value = False
    Me.Oman.Value = False
    Me.Palestine.Value = False
    Me.Qatar.Value = False
    Me.Rwanda.Value = False
    Me.SaudiArabia.Value = False
    Me.Turkey.Value = False
    Me.Uganda.Value = False
    Me.UAE.Value = False
    Me.Zimbabwe.Value = False
    End If
  End If
Next
End Sub

Private Sub SelectAllL_Click() ' this one is not working Correctly
Dim ctl As Control
Dim j As Long
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.CheckBox Then
    If Me.Controls(ctl.Name).Value = True Then
    Me.Chile.Value = True
    Me.Mexico.Value = True
    Me.Colombia.Value = True
    Else
    Me.Chile.Value = False
    Me.Mexico.Value = False
    Me.Colombia.Value = False
    End If
End If
Next
End Sub

你的代码太复杂了,为什么不让它更简单一些呢?由于您在 Click 事件中,您知道控件并且不需要循环用户窗体的每个控件!

Private Sub SA_Click()
    SelectAllA.Value = SA.Value
    SelectAllL.Value = SA.Value
    SelectallE.Value = SA.Value
End Sub

Private Sub SelectallE_Click()
    Bulgaria.Value = SelectallE.Value
    Croatia.Value = SelectallE.Value
    Croatia.Value = SelectallE.Value
    czechrepublic.Value = SelectallE.Value
    Estonia.Value = SelectallE.Value
    Hungary.Value = SelectallE.Value
    Latvia.Value = SelectallE.Value
    Lithuania.Value = SelectallE.Value
    Macedonia.Value = SelectallE.Value
    Poland.Value = SelectallE.Value
    Romania.Value = SelectallE.Value
    Russia.Value = SelectallE.Value
    Ukraine.Value = SelectallE.Value
End Sub

Private Sub SelectAllA_Click()
    Bahrain.Value = SelectAllA.Value
    CoteD.Value = SelectAllA.Value
    Egypt.Value = SelectAllA.Value
    Ghana.Value = SelectAllA.Value
    Iraq.Value = SelectAllA.Value
    Kenya.Value = SelectAllA.Value
    Kuwait.Value = SelectAllA.Value
    Morocco.Value = SelectAllA.Value
    Namibia.Value = SelectAllA.Value
    Nigeria.Value = SelectAllA.Value
    Oman.Value = SelectAllA.Value
    Palestine.Value = SelectAllA.Value
    Qatar.Value = SelectAllA.Value
    Rwanda.Value = SelectAllA.Value
    SaudiArabia.Value = SelectAllA.Value
    Turkey.Value = SelectAllA.Value
    Uganda.Value = SelectAllA.Value
    UAE.Value = SelectAllA.Value
    Zimbabwe.Value = SelectAllA.Value
End Sub

Private Sub SelectAllL_Click()
    Chile.Value = SelectAllL.Value
    Mexico.Value = SelectAllL.Value
    Colombia.Value = SelectAllL.Value
End Sub