2020.2.3

コンボボックスやリストボックスで「値リスト」を設定する方法

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の開発でハマったりすることが減ると思います。

Access】関連記事