| タイトル | : 複数チェックボックスの連動について |  
| 記事No | : 12891 |  
| 投稿日 | : 2008/08/12(Tue) 17:49 |  
| 投稿者 | : ダリア  |  
 お久しぶりです。ダリアです。 環境はVB6、WIN XPです。 複数のチェックボックスの連動について質問いたします。 説明が下手なのですが、チェックボックスに以下のような機能を持たせようと思っています。 (これを、本来ならばどのように表現するのかが、ちょっと分からないのです)
  フォーム上にA_CHECK_ALLというチェックボックスとA_CHECKというチェックボックスを7個用意します。
  そして、以下のような動作をさせようとしました。 A_CHECK_ALLのチェックボックスを(チェックする)オン状態にすると、A_CHECKの7個のチェックボックス全てがオンされます。 A_CHECK_ALLのチェックボックスを(チェックを外す)オフ状態にすると、A_CHECKの7個のチェックボックス全てがオフされます。 仮にA_CHECK_ALLがオン状態で、A_CHECKの7個のチェックボックスのひとつがオフにされた場合、A_CHECK_ALLはオフになります。 また、A_CHECK_ALLがオフ状態で、A_CHECKの7個のチェックボックスが全てオンになった場合、A_CHECK_ALLはオンになります。
  以下のようなイベントを各々のチェックボックスで作成したのですが、上手く動きません。 ClickイベントはChangeイベントと同義なので、とうぜんながらA_CHECKの値が変わった途端にA_CHECKのイベントが発生してしまいます。 このような場合、どのようにプログラムを組むべきなのでしょうか? よろしくお願いします。
 
  A_CHECK_ALLのイベント Private Sub A_CHECK_ALL_Click()
      Dim i As Integer          With frmDiagSelect         If .A_CHECK_ALL.Value = 1 Then             For i = 0 To 7                              If .A_CHECK(i).Enabled = True Then                     .A_CHECK(i).Value = 1                 End If                              Next i         Else             For i = 0 To 7                 .A_CHECK(i).Value = 0             Next i         End If          End With      End Sub
 
  A_CHECKのイベント Private Sub A_CHECK_Click(Index As Integer)
           With frmDiagSelect         For Index = 0 To 7             If .A_CHECK(Index).Value = 0 Then                 .A_CHECK_ALL.Value = 0                 Exit Sub             End If         Next Index                  .A_CHECK_ALL.Value = 1          End With
  End Sub 
 
 |