2017-12-07 13 views
0

ユーザーフォーム内で、他の複数のチェックボックス(月)を選択するチェックボックスをコーディングしています。これは、ユーザーがそれぞれをクリックするのではなく、12ヶ月すべてを選択できるようにするためです。以下は私が書いたコードです。私は今何が間違っていますか?さまざまな月を選択するためのチェックボックス

Private Sub Selectbox_AfterUpdate() 
Dim x As Integer 

If Me.Selectbox.Value = True Then 
For x = 0 To 12 
Me.Controls("Month" & x).Value = True 
Next x 
Me.Selectbox.Caption = "Deselect All" 

ElseIf Me.Selectbox.Value = False Then 
For x = 0 To 12 
Me.Controls("Month" & x).Value = False 

Next x 
Me.Selectbox.Caption = "Select All" 

End If 

End Sub 
+0

「真」または「偽」をチェックしないで、vbCheckedまたはvbUncheckedをチェックしてください。 –

+0

私はそれを試みました。それは私に "指定されたオブジェクトを見つけることができませんでした"と示唆している実行時エラーを与えます... – user8958702

答えて

1

12ヶ月あります。

For x = 0 To 12 

それはあなたが使用している名前に依存だ

For x = 1 To 12 

に変更します。

1

TrueまたはFalseをチェックしないで、vbCheckedまたはvbUncheckedを確認してください。また、ループには1回の反復回数があります。あなたのコードは次のようになります:

Private Sub Selectbox_AfterUpdate() 
    Dim x As Integer 

    If Me.Selectbox.Value = vbChecked Then 
     For x = 1 To 12 
     Me.Controls("Month" & x).Value = vbChecked 
     Next x 

     Me.Selectbox.Caption = "Deselect All" 
    ElseIf Me.Selectbox.Value = vbUnchecked Then 
     For x = 1 To 12 
     Me.Controls("Month" & x).Value = vbUnchecked 
     Next x 

     Me.Selectbox.Caption = "Select All" 
    End If 
End Sub 
+0

あなたは1ループですべてを行うことができます。 'Me.Controls(" Month "&x).Value = Me.Selectbox.Value' –

+0

あなたは正しいですか?私はOPのオリジナルの書式をそのまま残していました。 –

+0

ああ、私は今参照してください。 'Me.Selectbox.Caption = IIf(Me.Selectbox.Value、" Select All "、" Deselect All ")'が必要です。あなたのやり方はまあまあだと思います。乾杯。 –

関連する問題