HOME > 即効テクニック > AccessVBA > フォーム・レポート > リストボックスを使用する 3

即効テクニック

フォーム・レポート

リストボックスを使用する 3

(Access 2002/2003)
● 概要 ●
次のサンプルは、左のリストボックス(リスト1)で選択した複数の項目を右のリストボックス(リスト2)に移動するものです。デザイン画面でプロパティシートを使って、複数選択プロパティを、リスト1は「標準」に、リスト2は「しない」に設定してあります。また、フォームを読み込むときに、リスト1のRowSourceTypeプロパティに「Field List」、RowSourceプロパティにテーブル名を設定することによって、リスト1にテーブルのフィールド名を表示します。
リスト2は、AddItemメソッドを使えるように、RowSourceTypeプロパティに「Value List」を設定してあります。

● サンプル ●
Private Sub Form_Load()
    With リスト1
            .RowSourceType = "Field List"   '値集合タイプ
            .RowSource = "顧客テーブル"     '値集合ソース
    End With
    リスト2.RowSourceType = "Value List"    '値集合タイプ
End Sub


● 操作例1 ●
リストボックスに表示される項目数は、ListCountプロパティで取得できます。
For...Nextステートメントと組み合わせて使うことで、リストボックスのすべてのアイテムに対して操作を行うことができます。
次のコードは、[クリア]ボタンをクリックすることによって、リスト2のすべての項目を削除するものです。

Private Sub cmdクリア_Click()
    Dim i As Integer
   '項目数分ループをまわす
    For i = 0 To リスト2.ListCount - 1
     '1番上の項目を削除する
        リスト2.RemoveItem 0
    Next
End Sub

● 操作例2 ●
ItemDataプロパティを利用すると、指定したインデックス番号の連結列のデータを取得することができます。

次のコードは、[全追加]ボタンをクリックすることによって、リスト1のすべての項目をリスト2に追加するものです。

Private Sub cmd全追加_Click()
    Dim i As Integer
   '項目数分ループをまわす
    For i = 0 To リスト1.ListCount - 1
     'リスト1の項目をリスト2に追加
        リスト2.AddItem リスト1.ItemData(i)
    Next
End Sub

● 操作例3 ●
リストボックスで選択されている項目は、ItemsSelectedコレクションに含まれます。このコレクションは、リストボックスの選択行を参照します。

次のコードは、ItemSelectedコレクションを利用して、リスト1で選択されているすべての項目をリスト2に移動するものです。

Private Sub cmd追加_Click()
    Dim myItem As Variant
   '選択行を参照
    For Each myItem In リスト1.ItemsSelected
     '選択項目をリスト2に追加
        リスト2.AddItem リスト1.ItemData(myItem)
    Next
End Sub

● 操作例4 ●
Selectedプロパティを利用すると、指定したインデックス番号の項目が選択されているかどうかを取得することができます。選択されていればTrue、されていなければFalseを示します。
このプロパティは、値の設定も可能です。
次のコードは、[選択解除]ボタンをクリックすることによって、リスト1の項目の選択をすべて解除するものです。

Private Sub cmd解除_Click()
    Dim myItem As Variant
   '選択行を参照
    For Each myItem In リスト1.ItemsSelected
     '選択を解除
        リスト1.Selected(myItem) = False
    Next
End Sub