概要
本文書は、 Microsoft(R) Visual Basic(R) Programming System Applications
Edition (以下 VBA) でダイアログ ボックスおよびワークシート内のリストボッ
クスまたはドロップダウン リストボックスで選択された項目の文字列を取得する
ための方法を、サンプルモジュールと共に解説しています。
使用例
ダイアログ シート上の [書式] - [オブジェクト] コマンド - [コントロール]
パネル - [リンクするセル] テキストボックスでの指定では、選択されている
ものの位置番号 (何番目が選択されているか) しか取得することができません
が、VBA の ListIndex プロパティと List メソッドを組み合わせて使用する
ことで、選択されている文字列の内容を取得することができます。
1.「単一選択」リストボックス
「単一選択」のリストボックスやドロップダウン リストボックスで選択された項
目の文字列を取得するためには、List メソッドを使用します。この List メソッド
を使用するときに必要となる引数は項目の位置番号です。現在選択されている項目の
位置番号を取得するには、各オブジェクトの ListIndex プロパティで求めることが
可能です。
サンプル 1-1
次のサンプル モジュールでは、ダイアログ ボックス "Dialog1" を表示し、ダイ
アログ ボックス内のリストボックスで選択された項目の文字列をワークシート
"Sheet1" のセル "$D$1" に入力しています。
Sub DlgSamp()
DialogSheets("Dialog1").Show
Worksheets("Sheet1").Range("$D$1").Value = _
DialogSheets("Dialog1").ListBoxes("リスト 4").List( _
DialogSheets("Dialog1").ListBoxes("リスト 4").ListIndex)
End Sub
サンプル 1-2
次のサンプルモジュールでは、ワークシート "Sheet1" 上に存在するドロップダウ
ン リストボックス "ドロップ 1" で選択された項目の文字列をワークシート
"Sheet1" のセル "$D$1" に入力しています。
ドロップダウン リストボックス "ドロップ 1" に以下のマクロを登録することに
より、リストから項目が選択されるたびに、セル "$D$1" に文字列が代入されます。
Sub DropSamp()
Worksheets("sheet1").Range("$D$1").Value = _
Worksheets("sheet1").DropDowns("ドロップ 1").List( _
Worksheets("sheet1").DropDowns("ドロップ 1").ListIndex)
End Sub
2.「複数選択」、「拡張選択」リストボックス
「複数選択」および「拡張選択」のリストボックスやドロップダウン リストボッ
クスで選択された項目の文字列を取得するためには、List メソッドを使用します。
この List メソッドを使用するときに必要となる引数は項目の位置番号です。現在選
択されている項目の位置番号を取得するには、各オブジェクトの Selected プロパ
ティで求めることが可能です。
サンプル 2-1
次のサンプル モジュールでは、ダイアログ ボックス "Dialog1" を表示し、ダイ
アログ ボックス内のリストボックスで選択された項目すべての文字列を MsgBox 関
数を使用して表示しています。
Sub MultiListSamp()
Dim selectitem As Variant
DialogSheets("dialog1").Show
selectitem = DialogSheets("Dialog1"). _
ListBoxes("リスト 1").Selected
For i = 1 To DialogSheets("Dialog1"). _
ListBoxes("リスト 1").ListCount
If selectitem(i) = True Then
MsgBox DialogSheets("Dialog2"). _
ListBoxes("リスト 1").List(i)
End If
Next I
End Sub
サンプル 2-2
次のサンプルモジュールでは、ワークシート "Sheet1" 上に存在するドロップダウ
ン リストボックス "ドロップ 1" で選択された項目すべての文字列を MsgBox 関数
を使用して表示しています。
ドロップダウン リストボックス "ドロップ 1" に以下のマクロを登録することに
より、リストから項目が選択されるたびに、MsgBox が表示されます。
Sub MultiDropSamp()
Dim selectitem As Variant
selectitem = WorkSheets("Sheet1").DropDowns("ドロップ 1").Selected
For i = 1 To WorkSheets("Sheet1"). _
DropDowns("ドロップ 1").ListCount
If selectitem(i) = True Then
MsgBox WorkSheets("Sheet1"). _
DropDowns("ドロップ 1").List(i)
End If
Next I
End Sub