2016-05-19 10 views
0

Userformには、4(4)Select AllCheck-boxesがあります。選択すべての地域のための複数フレームごとのチェックボックスをすべて選択

  1. SelectAllE東欧

  2. 中東SelectAllA &アフリカ

  3. ラテンアメリカのためSelectAllL &カリブ海

  4. SA(ワーキング)

のみ第1は、各チェックボックス

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 

答えて

2

あなたのコードのためのコードは次のとおり正しく

Userform

取り組んでいることは、なぜもっとシンプルにそれをあまりにも複雑維持されていませんか?あなたは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 
+1

グローバル選択すべてチェックボックスの動作を少し変更しました。 –

関連する問題