リストボックスの使い方 [ExcelのVBA]
リストボックス
「リストボックス」はリストの中から1つまたは複数の項目を選択するコントロールです。
| 正式名称 | ListBox |
|---|
コード例 - 基本操作
次のコードはリストボックスの形式を「単一選択形式」にして「項目を追加」しています。そして、リストボックスの項目が選択された場合にその内容をイミディエイトへ出力します。
Private Sub CommandButton1_Click()
' 選択可能な項目を1つにする(単一選択形式)
ListBox1.MultiSelect = fmMultiSelectSingle
' リストボックスにアイテムを追加する
ListBox1.AddItem ("りんご")
ListBox1.AddItem ("みかん")
ListBox1.AddItem ("メロン")
' エクセルのシートの値をリストボックスのリストへ
' 代入するにはRowSourceプロパティを使用します。
' (例) ListBox1.RowSource = "Sheet1!A1:A5"
End Sub
Private Sub ListBox1_Change()
Dim Str As String
If ListBox1.ListIndex <> -1 Then
' 現在選択されている項目名を取得する
Str = ListBox1.list(ListBox1.ListIndex)
' イミディエイトへ出力(ListIndexは選択されている番号)
Debug.Print "ListIndex:" & ListBox1.ListIndex & " " & Str
End If
End Sub
[結果]
次はMultiSelectプロパティの定数です。
| 定数 | 意味 |
|---|---|
| fmMultiSelectSingle | 項目を一つだけ選択できる(デフォルト) |
| fmMultiSelectMulti | 項目を複数選択可能。 クリックまたはスペースキーで選択する |
| fmMultiSelectExtended | 項目を複数選択可能。 連続した複数選択はShiftキーを押しながらクリック。連続しない複数選択はCtrlキーを押しながらクリックする |
コード例 - 複数選択
複数選択可能なリストボックスの例となります。選択している項目の取得はボタンクリックで判別しています。
Private Sub CommandButton1_Click()
' 選択可能な項目を複数にする
ListBox1.MultiSelect = fmMultiSelectMulti
' リストの形式をチェックボタンにする
ListBox1.ListStyle = fmListStyleOption
' リストボックスにアイテムを追加する
ListBox1.AddItem ("りんご")
ListBox1.AddItem ("みかん")
ListBox1.AddItem ("メロン")
End Sub
Private Sub CommandButton2_Click()
Dim str As String
Dim i As Long
str = ""
For i = 0 To ListBox1.ListCount - 1
' 選択されているならば
If ListBox1.Selected(i) = True Then
' 項目名を取得する
str = str + ListBox1.list(i) & " "
End If
Next
If str <> "" Then
Debug.Print "選択されている項目:" & str
Else
Debug.Print "何も選択されていません。"
End If
End Sub
[結果]
コード例 - 複数列の作成
リストボックスで複数のカラム(列)を作成します。選択項目の取得には「Text」と「Value」プロパティを使用しています。
Private Sub CommandButton1_Click()
' リストボックス用のリスト
Dim lst_list(2, 1) As Variant
' リストボックス用のリストデータの生成
lst_list(0, 0) = "001"
lst_list(1, 0) = "002"
lst_list(2, 0) = "003"
lst_list(0, 1) = "りんご"
lst_list(1, 1) = "みかん"
lst_list(2, 1) = "メロン"
With ListBox1
' 選択可能な項目を1つにする(単一選択形式)
.MultiSelect = fmMultiSelectSingle
' リストの幅を設定する(ドロップダウンリストの幅)
.ListWidth = 200
' カラム(列)のヘッダを表示する
.ColumnHeads = True
' 表示するカラム数を設定する
.ColumnCount = 2
' カラムの横幅
.ColumnWidths = 30
' 値を表示するカラム番号
' ※1列目は「1」、2列目は「2」となる
.TextColumn = 1
' 値を取得するカラム番号
' ※1列目は「1」、2列目は「2」となる
.BoundColumn = 2
' リストボックスのリストへ代入
.list = lst_list
End With
End Sub
Private Sub ListBox1_Change()
If ListBox1.ListIndex <> -1 Then
' イミディエイトへ出力
' ※TextプロパティはTextColumnプロパティに依存します。
' ※ValueプロパティはBoundColumnプロパティに依存します。
Debug.Print "Text = " & ListBox1.Text & " Value = " & ListBox1.Value
End If
End Sub
[結果]
プロパティの一覧
| プロパティ | 内容 |
|---|---|
| BackColor | コントロールの背景色 |
| BorderColor | コントロールの枠線色 |
| BorderStyle | コントロールの枠スタイル |
| BoundColumn | 値を取得するカラム(列)の設定。1列目は「1」、2列目は「2」となる。 ※コンボ/リストボックスで複数の列を使用する場合のみ |
| ColumnCount | カラム数(列数)の設定 ※コンボ/リストボックスで複数の列を使用する場合のみ |
| ColumnHeads | カラムのヘッダの表示設定 ※コンボ/リストボックスで複数の列を使用する場合のみ |
| ColumnWidths | カラムの横幅 ※コンボ/リストボックスで複数の列を使用する場合のみ |
| ControlSource | 「Sheet1!A1」などのようにシートの値を設定する。 |
| ControlTipText | コントロールのチップテキスト(ヒント)の設定 |
| Enabled | コントロールの使用設定(True/False) |
| Font | 文字列のフォントの設定 |
| ForeColor | 文字列の表示色の設定 |
| Height | コントロールの縦幅 |
| HelpContextID | ヘルプのコンテキストIDの設定 |
| IMEMode | IME(文字入力)の設定 |
| IntegralHeight | 一部の項目しか表示されない場合にコントロールのサイズを変更する |
| Left | コントロールの表示位置(画面の左幅) |
| ListStyle | ドロップダウンリストのスタイル |
| Locked | コントロールの編集設定(オン/オフ) |
| MatchEntry | リストの項目を検索する際の規則を設定 |
| MousePointer | マウスポインターの設定 |
| MousePointer | マウスポインターの設定 |
| MultiSelect | リストの複数選択設定 |
| RowSource | 「Sheet1!A1:A3」などのように入力するとエクセルからデータを取得してリストへ設定できます。 |
| SpecialEffect | コントロールの表示スタイルの設定 |
| TabIndex | タブインデックス。タブキーを押した時の順番を設定する |
| TabStop | タブキーを押した時に止まるかの設定 |
| Tag | 任意の文字列を設定(String型) |
| Text | コントロールの文字列を設定する |
| TextAlign | 文字列の表示形式を設定する |
| TextColumn | 値を表示するカラム(列)の設定。1列目は「1」、2列目は「2」となる。 ※コンボ/リストボックスで複数の列を使用する場合のみ |
| Top | コントロールの表示位置(画面の上幅) |
| TopIndex | リストの先頭に表示される項目を設定 |
| Value | コントロールの値の設定 |
| Visible | コントロールの表示設定(True/False) |
| Width | コントロールの横幅 |
※プロパティの基本的な使い方は「プロパティの使い方」をご覧ください。
イベントの一覧
| イベント | 内容 |
|---|---|
| AfterUpdate | (コード上で)コントロールのデータを変更した後に発生する。 |
| BeforeDragOver | コントロールへファイルをドラッグ中。 |
| BeforeDropOrPaste | コントロールへファイルをドロップした。 |
| BeforeUpdate | (コード上で)コントロールのデータを変更する前に発生する。 |
| Change | コントロールの値が変更された。 |
| Click | コントロールをクリックした。 |
| DblClick | コントロールをダブルクリックした。 |
| Enter | コントロールにフォーカスが移る時。 |
| Error | コントロールでエラーが発生した。 |
| Exit | コントロールのフォーカスが別のコントロールに移る時。 |
| KeyDown | コントロール上でなんらかのキーを押した。 |
| KeyPress | コントロール上で英数字記号キーを押した。 |
| KeyUp | コントロール上でなんらかのキーを離した。 |
| MouseDown | コントロール上でマウスのボタンを押した。 |
| MouseMove | コントロール上でマウスが移動した。 |
| MouseUp | コントロール上でマウスのボタンを離した。 |
※イベントの基本的な使い方は「イベントの使い方」をご覧ください。
Visual Basicのコントロール
| 共通操作 プロパティの使い方 イベントの使い方 |
![]() | ラベル |
![]() | テキストボックス |
![]() | コンボボックス |
![]() | リストボックス |
![]() | チェックボックス |
![]() | オプションボタン |
![]() | トグルボタン |
![]() | フレーム |
![]() | コマンドボタン |
![]() | タブストリップ |
![]() | マルチページ |
![]() | スクロールバー |
![]() | スピンボタン |
![]() | イメージ |
| ユーザーフォーム |
エクセル講座のクイックリンク
スポンサーリンク
関連記事
公開日:2015年06月30日 最終更新日:2015年07月06日
記事NO:01084
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |























