0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AccessのVBAでコンボボックスの選択肢数に応じて初期化

Last updated at Posted at 2023-04-20

概要

コンボボックスの選択肢をVBAで動的に生成。

そして…

  • 選択肢が1つだけなら、その値を選択状態にしておく。
  • 選択肢が2つ以上なら空の選択肢を追加して、その値を選択状態にしておく。

のような切り替え。

コンボボックスの動的設定

詳細は下記参照。

サンプル(列が1つ)

'フォーム開いた時の動作。
Private Sub Form_Open(Cancel As Integer)

    'フォーム上に『cmb_1』という名前のコンボボックスがある前提。
    
    '選択肢を動的に設定。
    Me.cmb_1.RowSourceType = "Value List"
    Me.cmb_1.RowSource = ""
    Me.cmb_1.ColumnCount = 1
    
    '選択肢追加。
    Me.cmb_1.AddItem "あ"
    
    '下記コメントアウトを外すかどうかで動作が変わる。
    'Me.cmb_1.AddItem "い"
    
    '選択肢の数によって初期選択などの切替。
    If Me.cmb_1.ListCount = 1 Then
        Me.cmb_1.Value = Me.cmb_1.ItemData(0)
    Else
        Me.cmb_1.AddItem ""
        Me.cmb_1.Value = ""
    End If
    
End Sub

選択肢が1つだけなら下記。
image.png

選択肢が2つなら下記。
image.png
image.png

サンプル(列が2つ)

'フォーム開いた時の動作。
Private Sub Form_Open(Cancel As Integer)

    'フォーム上に『cmb_1』という名前のコンボボックスがある前提。
    
    '選択肢を動的に設定。
    Me.cmb_1.RowSourceType = "Value List"
    Me.cmb_1.RowSource = ""
    Me.cmb_1.ColumnCount = 2
    
    '選択肢追加。
    Me.cmb_1.AddItem "あ;あです;"
    
    '下記コメントアウトを外すかどうかで動作が変わる。
    'Me.cmb_1.AddItem "い;です;"
    
    '選択肢の数によって初期選択などの切替。
    If Me.cmb_1.ListCount = 1 Then
        Me.cmb_1.Value = Me.cmb_1.ItemData(0)
    Else
        Me.cmb_1.AddItem ""
        Me.cmb_1.Value = ""
    End If
    
End Sub

選択肢が1つだけなら下記。
image.png

選択肢が2つなら下記。
image.png
image.png

ポイント

選択肢の『数』を変数で持っておく必要は無い

Me.コンボボックスの名前.ListCount で取得できる。

選択肢の『値』を変数で持っておく必要は無い

一番上の選択肢でよければ Me.コンボボックスの名前.ItemData(0) でよい。

列数に依存しない

前述のサンプルたちを参照。

参考サイトさん

バージョン

Windows 10 Pro 22H2 19045.2846
Microsoft Access for Microsoft 365 MSO (バージョン 2303 ビルド 16.0.16227.20202) 32 ビット

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?