TOP > カテゴリ > Excel >

リストボックスの使い方 [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の設定
IMEModeIME(文字入力)の設定
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のコントロール

共通操作
 プロパティの使い方 イベントの使い方

ラベル
テキストボックス
コンボボックス
リストボックス
チェックボックス
オプションボタン
トグルボタン
フレーム
コマンドボタン
タブストリップ
マルチページ
スクロールバー
スピンボタン
イメージ
ユーザーフォーム

エクセル講座のクイックリンク

ホーム 新機能 基本(初級) 基本(中級) 基本(上級) 関数 マクロ VBA TIPS





関連記事



公開日:2015年06月30日 最終更新日:2015年07月06日
記事NO:01084