Access

【VBA】リストボックス内のデータを全選択・全選択解除するボタンを用意してUIを改善する

複数選択リストボックス
記事内に商品プロモーションを含む場合があります

ACCESSのフォームにて、リストボックスから複数選択させるUIを用意する場合、リスト項目内のデータ数が多ければ多いほどユーザーの選択の手間が増えます。

そこで、全選択・全解除ボタンを用意しておくとユーザーの利便性が格段に上がります。

今回は、マルチセレクトのリストボックス値に対する、全選択・全解除のサンプルコードをご紹介します。

 

複数選択リストボックス
VBAで複数選択可能なリストボックスの選択値を取得する方法今回は、検索条件として指定する値が、マルチセレクト(複数選択可能)リストボックスの選択値である場合を例に説明します。 ...

 

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

ボタンに表示するアイコンは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がベストなのかは違ってきますので、しっかりユーザーのニーズをとらえて設計しましょう!

ABOUT ME
アズビーパートナーズ
プログラマー→社内SE→SIerのお仕事をしています。 メーカー勤務を経て、中小企業の社内SE、フリーランスなど様々な形態で働いてきました。 業務上生まれた困った…を解決してきたTipsを備忘録も兼ねて公開しています。 困っている誰かのお役に立てれば幸いです。