← コード一覧へ戻る
実務UserForm

リストボックスで選択されているデータを取得する(2):BoundColumn

2列リストの表示名とは別に、BoundColumnで商品コードをValueから取得します。

実行前に確認

  • BoundColumn=1は1列目ですが、List(行, 0)の列番号は0始まりです。ControlSourceは空欄にし、シートとの自動書き込み連結は使いません。
  • 添付目次の番号に対応させた独自の実装例です。書籍本文の方法を再現・確認したものではありません。
  • コードと公式仕様を照合した学習用の例です。Excel実機での実行確認は行っていません。

1サンプルコード

'【貼付先:UserForm1 のコードモジュール】
Option Explicit

Private Sub UserForm_Initialize()
    With Me.ListBox1
        .ColumnCount = 2
        .ColumnWidths = "55 pt;90 pt"
        .BoundColumn = 1
        .MultiSelect = fmMultiSelectSingle
        .AddItem "P001"
        .List(0, 1) = "ノート"
        .AddItem "P002"
        .List(1, 1) = "鉛筆"
    End With
    Me.CommandButton1.Caption = "コードを確認"
End Sub

Private Sub CommandButton1_Click()
    If Me.ListBox1.ListIndex < 0 Then
        MsgBox "商品を選択してください。"
        Exit Sub
    End If
    MsgBox "商品コード:" & CStr(Me.ListBox1.Value)
End Sub

図で見る表示名と取得値を分ける

イメージ図

2列リストの表示名とは別に、BoundColumnで商品コードをValueから取得します。

  1. 2列

    コードと商品名を並べる

  2. 設定

    BoundColumn=1

  3. 取得

    ValueでP002を読む

各操作は、このガイドに指定されたフォームのコードで行います。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。

  2. 2

    ツールボックスからListBox1とCommandButton1を各1個。ListBox1の幅は160ポイント程度を置き、各コントロールの[(Name)]が記載どおりか確認します。

  3. 3

    UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。

  4. 4

    VBEでUserForm1を選び、F5でフォームを表示します。 「P002・鉛筆」の行を選び、「コードを確認」を押します。

  5. 5

    商品名ではなく「商品コード:P002」と表示されます。

使っている機能の公式ドキュメント(Microsoft Learn)