ACCESSのフォームにて、リストボックスから複数選択させるUIを用意する場合、リスト項目内のデータ数が多ければ多いほどユーザーの選択の手間が増えます。
そこで、全選択・全解除ボタンを用意しておくとユーザーの利便性が格段に上がります。
今回は、マルチセレクトのリストボックス値に対する、全選択・全解除のサンプルコードをご紹介します。

ちなみに、私の場合はリストボックスの上に下のようなボタンを用意することが多いです。

ボタンに表示するアイコンはFAMFAMFAMを利用しています。Accessの標準で用意されているアイコンには必要なアイコンがないことが多いのです大変助かっています!
リストボックス内全データ選択コード
'--------------------------------------------------------------------- ' 全選択ボタンクリックでリスト内全行選択状態にする '--------------------------------------------------------------------- Private Sub cmd全選択_Click() Dim iintLoop As Integer With Me!lstResult For iintLoop = 0 To .ListCount - 1 .Selected(iintLoop) = True Next iintLoop End With End Sub
リストボックス内全データ選択解除コード
'--------------------------------------------------------------------- ' 全解除ボタンクリックでリスト内全行非選択状態にする '--------------------------------------------------------------------- Private Sub cmd全解除_Click() Dim iintLoop As Integer With Me!lstResult For iintLoop = 0 To .ListCount - 1 .Selected(iintLoop) = False Next iintLoop End With End Sub
リストボックスによる選択がベストか?!
複数の値を選択してもらうUIの場合、リストボックスのマルチセレクトを使うか、帳票フォームを使ってチェックボックスのON/OFFをしてもらうか・・・どちらがいいのかは状況に応じて使い分けています。
リストボックスの場合、画面の再描画等の手間がなくソースもスッキリします。
ただ、SHIFTキー(開始終了位置指定)やCTRLキー(複数指定)と併用して複数選択できるユーザーであればいいのですがPC操作が得意ではないユーザーが対象の場合、逆に使いにくいこともあります。
(せっかく複数選んだのに、ついうっかりCTRLキーを離してしまって選択が解除されてしまったり・・・)
そのようなケースが想定される場合は帳票フォームを作成してチェックボックスを利用した選択方法を選ぶ場合もあります。
また、熟考して選択するような場合もチェックボックスの方が安心かもしれないですね。
このように、利用者のPCスキルや想定される選択パターンなどによってどのようなUIがベストなのかは違ってきますので、しっかりユーザーのニーズをとらえて設計しましょう!