TOP > カテゴリ > Excel >

コンボボックスの使い方 [ExcelのVBA]

コンボボックス

「コンボボックス」はコントロールの右横にあるドロップボタンを押してリストの中から1つの項目を選択するコントロールです。

正式名称ComboBox

コード例 - 基本操作

次のコードはコンボボックスの形式を「リスト形式」にして「項目を追加」しています。そして、コンボボックスの項目が選択された場合にその内容をイミディエイトへ出力します。

Private Sub CommandButton1_Click()
  
  ' コンボボックスのスタイルをリスト形式にする
  ' ※リスト形式だとコンボの文字列をユーザーは編集不可となる
  ComboBox1.Style = fmStyleDropDownList
   
  ' コンボボックスにアイテムを追加する
  ComboBox1.AddItem ("りんご")
  ComboBox1.AddItem ("みかん")
  ComboBox1.AddItem ("メロン")

  ' エクセルのシートの値をコンボボックスのリストへ
  ' 代入するにはRowSourceプロパティを使用します。
  ' (例) ComboBox1.RowSource = "Sheet1!A1:A5"
  
End Sub

Private Sub ComboBox1_Change()
  Dim Str As String
  
  If ComboBox1.ListIndex <> -1 Then
    ' 現在選択されている項目名を取得する
    Str = ComboBox1.List(ComboBox1.ListIndex)
  
    ' イミディエイトへ出力(ListIndexは選択されている番号)
    Debug.Print "ListIndex:" & ComboBox1.ListIndex & " " & Str
  
  End If

End Sub

[結果]

コード例 - 複数列の作成

コンボボックスで複数のカラム(列)を作成します。選択項目の取得には「ListIndex」ではなく「Text」と「Value」プロパティを使用しています。

Private Sub CommandButton1_Click()
 
  ' コンボボックス用のリスト
  Dim cmb_list(2, 1) As Variant

  ' コンボボックス用のリストデータの生成
  cmb_list(0, 0) = "001"
  cmb_list(1, 0) = "002"
  cmb_list(2, 0) = "003"
  cmb_list(0, 1) = "りんご"
  cmb_list(1, 1) = "みかん"
  cmb_list(2, 1) = "メロン"

  With ComboBox1
  
    ' コンボボックスのスタイルをリスト形式にする
    ' ※リスト形式だとコンボの文字列をユーザーは編集不可となる
    .Style = fmStyleDropDownList
    
    ' リストの幅を設定する(ドロップダウンリストの幅)
    .ListWidth = 200
  
    ' カラム(列)のヘッダを表示する
    .ColumnHeads = True
  
    ' 表示するカラム数を設定する
    .ColumnCount = 2
  
    ' カラムの横幅
    .ColumnWidths = 30
    
    ' 値を表示するカラム番号
    ' ※1列目は「1」、2列目は「2」となる
    .TextColumn = 1
  
    ' 値を取得するカラム番号
    ' ※1列目は「1」、2列目は「2」となる
    .BoundColumn = 2
    
    ' コンボボックスのリストへ代入
    .list = cmb_list
       
  End With

End Sub

Private Sub ComboBox1_Change()
  
  If ComboBox1.ListIndex <> -1 Then
  
    ' イミディエイトへ出力
    ' ※TextプロパティはTextColumnプロパティに依存します。
    ' ※ValueプロパティはBoundColumnプロパティに依存します。
    Debug.Print "Text = " & ComboBox1.Text & " Value = " & ComboBox1.Value
    
  End If
  
End Sub

[結果]

※コンボボックスで複数の列を扱うのは「やや難しい」ので、覚えるのは後回しでも大丈夫です。

プロパティの一覧

プロパティ内容
AutoSizeコントロールのサイズを自動的に文字列に合わせる
AutoTabコントロールへの入力が最大文字数になった場合に他コントロールへフォーカスを移動する
AutoWordSelect文字の選択範囲の自動設定
BackColorコントロールの背景色
BackStyleコントロールの背景スタイル
BorderColorコントロールの枠線色
BorderStyleコントロールの枠スタイル
BoundColumn値を取得するカラム(列)の設定。1列目は「1」、2列目は「2」となる。 ※コンボ/リストボックスで複数の列を使用する場合のみ
ColumnCountカラム数(列数)の設定 ※コンボ/リストボックスで複数の列を使用する場合のみ
ColumnHeadsカラムのヘッダの表示設定 ※コンボ/リストボックスで複数の列を使用する場合のみ
ColumnWidthsカラムの横幅 ※コンボ/リストボックスで複数の列を使用する場合のみ
ControlSource「Sheet1!A1」などのようにシートの値を設定する。
ControlTipTextコントロールのチップテキスト(ヒント)の設定
DragBehaviorドラッグアンドドロップの設定
DropButtonStyleドロップボタンのスタイルの設定
Enabledコントロールの使用設定(True/False)
EnterFieldBehaviorフォーカス時に文字列を選択するかの設定
Font文字列のフォントの設定
ForeColor文字列の表示色の設定
Heightコントロールの縦幅
HelpContextIDヘルプのコンテキストIDの設定
HideSelectionフォーカスを失った時の強調表示の設定
IMEModeIME(文字入力)の設定
Leftコントロールの表示位置(画面の左幅)
ListRowsドロップダウンリストの表示行数
ListStyleドロップダウンリストのスタイル
ListWidthドロップダウンリストの横幅
Lockedコントロールの編集設定(オン/オフ)
MatchEntryリストの項目を検索する際の規則を設定
MatchRequiredリストの項目にある値のみ入力可能とする
MaxLength文字列の最大入力数。0は入力制限なし。
MouseIconマウスアイコンの設定
MousePointerマウスポインターの設定
RowSource「Sheet1!A1:A3」などのように入力するとエクセルからデータを取得してリストへ設定できます。
SelectionMargin文字列の左側余白をクリックする事で選択可能にする
ShowDropButtonWhenドロップボタンの表示タイミングの設定
SpecialEffectコントロールの表示スタイルの設定
Styleスタイルを設定
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コントロールをダブルクリックした。
DropButtonClickドロップボタンが押された。
Enterコントロールにフォーカスが移る時。
Errorコントロールでエラーが発生した。
Exitコントロールのフォーカスが別のコントロールに移る時。
KeyDownコントロール上でなんらかのキーを押した。
KeyPressコントロール上で英数字記号キーを押した。
KeyUpコントロール上でなんらかのキーを離した。
MouseDownコントロール上でマウスのボタンを押した。
MouseMoveコントロール上でマウスが移動した。
MouseUpコントロール上でマウスのボタンを離した。

※イベントの基本的な使い方は「イベントの使い方」をご覧ください。

Visual Basicのコントロール

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

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

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

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





関連記事



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