フォームに多数のチェックボックスを置いたうえで、簡単なVBAを用いて一括でOnまたはOffにする方法についてです。
ただし、ここで示すのは各レコード内の連結チェックボックス、またはヘッダやフッタに設置する非連結のチェックボックスを操作する方法です。「多数のレコードのチェックボックスを一括On/Offする」という内容ではありません。
方法については2つ紹介します。
後者の場合は「一部のチェックボックスを一括On/Offする」ということが可能ですので、そのような設定例を示しています。
手順
ControlTypeプロパティを利用する方法
フォーム上の全コントロールを走査して、そのControlTypeプロパティの値によってチェックボックスであることを識別し操作する方法です。
レコードソースとしてこのようなテーブルを用います。
フォームのデザインビューにて各コントロールを置いた状態です。
ここでコマンドボタンを1つ置き、「名前」を「cmd_全選択」とします。
そしてフォームモジュールに次のようなコードを記します。
フォーム上の各コントロールのうちControlTypeプロパティの値が「acCheckBox」であるものをすべてOn(True)にするという内容です。
一括Offにする場合は「True」を「False」にします。
Option Compare Database Private Sub cmd_全選択_Click() Dim i As Control For Each i In Me.Controls If i.ControlType = acCheckBox Then i.Value = True End If Next End Sub
コマンドボタンをクリックするとすべてのチェックボックスがOn(True)になりました。
タグプロパティを利用する方法
各チェックボックスの「タグ」プロパティ(特別な効果をもたないプロパティです)に共通する値を設定しておく方法です。フォーム上の全コントロールを走査するのは同じですが、そのタグプロパティの値によって一括操作の対象であることを識別します。
チェックボックスのうち一部のものだけを一括操作することが可能になりますし、コントロールの種類を問わず操作の対象とすることも可能です。
以下ではチェックボックスのうち一部のものだけを一括操作する例を試してみます。
レコードソースとしてこのようなテーブルを用います。
チェックボックスのうち、左側の5つと右側の5つをそれぞれ別のグループとして区別します。
フォームのデザインビューにて各コントロールを置いた状態です。
テーブル上の左側の5つのチェックボックスを上段に、右側の5つのチェックボックスを下段に配置しています。
ここでコマンドボタンを2つ置き、「名前」をそれぞれ「cmd_メディア全選択」「cmd_政策全選択」とします。
そして上段のチェックボックスをすべて選択し(ラベルは選択しない)、「タグ」プロパティの値を「メディアグループ」とします。
同じく下段のチェックボックスについては「政策グループ」とします。
フォームモジュールに次のようなコードを記します。
フォーム上の各コントロールのタグプロパティの値を取得し、設定しておいたものに一致するものをすべてOn(True)にするという内容です。
つまり、ボタン「cmd_メディア全選択」をクリックすればタグプロパティが「メディアグループ」であるものがOn(True)になり、ボタン「cmd_政策全選択」をクリックすればタグプロパティが「政策グループ」であるものがOn(True)になります。
Option Compare Database Private Sub cmd_メディア全選択_Click() Dim i As Control For Each i In Me.Controls If i.Tag = "メディアグループ" Then i.Value = True End If Next End Sub Private Sub cmd_政策全選択_Click() Dim i As Control For Each i In Me.Controls If i.Tag = "政策グループ" Then i.Value = True End If Next End Sub
「cmd_政策全選択」のボタンをクリックしたところです。
下段のチェックボックスだけがOnになりました。