コンボボックスやリストボックスで「値リスト」を設定する方法
Accessのコンボボックスやリストボックスの値集合タイプに「値リスト」を設定した場合のリストの作成方法についてです。
テーブルで管理するほど重要ではないコード(はい・いいえ、ON・OFFなど)をリストで用意する際によく利用します。
目次
- リストの内容
- 値リストの作成
- VBAで値リストのデータを作成
リストの内容
値リストの作成
コントロールに対して直接、リストの内容を書き込むのが値リストですが、一番簡単なのはウィザードを使って作成する方法です。
フォームにリストボックのスコントロールを配置するとウィザードが表示されるので、最初に「表示する値をここで指定する」を選択します。
続いて、列数とデータの登録画面が表示されるので、必要なデータを入力します。
次に「連結列」の設定。
最後にラベルを入力すれば完了です。
作成されたリストボックスの値集合ソースを見ると、先ほど入力したデータが埋め込まれています。
値集合ソースを見てもらうと、列(コードや名称)に関係なく、すべてのデータがセミコロン「;」で区切られているのが分かると思います。
01;"リストA";02;"リストB";03;"リストC";04;"リストD";05;"リストE"
データを修正する際は、この値集合ソースの文字列を直接修正することができます。(以下はリストに「06」を追加したもの)
項目数が多いと、Accessのプロパティで編集するのは大変なので、一度、テキストエディタに貼り付けたりして修正すると、間違いが減ると思います。
VBAで値リストのデータを作成
ウィザードやプロパティからではなく、VBAで値リストを作成することもできます。
その場合のコード(サンプル)は以下の通り。
Dim arr() As String
arr = Split("リストA,リストB,リストC,リストD,リストE", ",")
Dim values As String
values = ""
For i = 0 To UBound(arr)
If Len(values) > 0 Then
values = values & ";"
End If
values = values & Format(i + 1, "00") & ";"
values = values & """" & arr(i) & """"
Next
[リスト0].RowSource = values
作成したリスト用の文字列(values)をリストボックスの「RowSource」にセットしています。
VBAでリストの内容をセットする機会は少ないですが、こういったことができるということを知っておくと、Accessの開発でハマったりすることが減ると思います。