关注Userform
有4(四)Select All
Check-boxes
。
SelectAllE for Eastern Europe
SelectAllA for Middle East&非洲
SelectAllL for Latin America&加勒比
选择所有区域的SA(工作)
只有第四个正常工作
以下是每个复选框的代码
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
答案 0 :(得分:2)
您的代码太复杂了,为什么不让它更简单?由于您在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