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

即効テクニック

フォーム・レポート

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

(Access 2002/2003)
● 概要 ●
リストボックスには、テーブルやクエリに保存されているデータだけでなく、任意のデータを指定して表示することもできます。
その場合、RowSourceTypeプロパティに「Value List」を設定します。また、表示するデータは、RowSourceプロパティにセミコロンで区切って設定します。
次のコードは、フォームを読み込むときに、リストボックスに表示するデータを指定するものです。


● サンプル ●
Private Sub Form_Load()
    With リスト
         '値集合タイプ
        .RowSourceType = "Value List"
         '値集合ソース
        .RowSource = "イヌ;ネコ;リス"
    End With
End Sub


● 操作例1 ●
コードでリストに項目を追加するには、AddItemメソッドを利用します。引数に指定した文字列をリストの末尾に追加します。
書式は次のとおりです。

ListBox.AddItem(Item)

次のコードは、AddItemメソッドを利用して、[追加]ボタンの機能を記述したものです。

Private Sub cmd追加_Click()
   'テキストボックスに入力されている場合
    If Not IsNull(テキスト) Then
     'テキストボックスの値をリスト末尾に追加
        リスト.AddItem テキスト.Value
    End If
End Sub

● 操作例2 ●
AddItemメソッドの第2引数に、インデックス番号を指定すると、第1引数に指定した文字列をリストのインデックス位置に追加します。
インデックス番号は、0から始まります。
書式は次のとおりです。

ListBox.AddItem(Item, Index)

次のコードは、インデックスを利用して[挿入]ボタンの機能を記述したものです。

Private Sub cmd挿入_Click()
    'テキストボックスに入力があり、かつ、リストボックスの
  項目が選択されている場合
    If Not IsNull(テキスト) And リスト.ListIndex <> -1 Then
        リスト.AddItem テキスト.Value, リスト.ListIndex
    End If
End Sub

● 操作例3 ●
リストボックスから項目を削除するには、RemoveItemメソッドを利用します。引数には、削除する項目のインデックス番号を指定します。書式は次のとおりです。

ListBox.RemoveItem(Index)

Private Sub cmd削除_Click()
  'リストボックスの項目が選択されている場合
    If リスト.ListIndex <> -1 Then
    '選択項目を削除
        リスト.RemoveItem リスト.ListIndex
    End If
End Sub


● 注意 ●
AddItemメソッドとRemoveItemメソッドが使用できるのは、リストボックスの
RowSourceTypeプロパティが「Value List」に設定されている場合になります。