【ExcelVBA】シート上に配置されたActiveXコントロールのコンボボックスに登録されている値をすべて取得するには

この記事では、シート上に配置されたActiveXコントロールのコンボボックスに登録されている値をすべて取得する方法についてご説明します。

【動画】シート上に配置されたActiveXコントロールのコンボボックスに登録されている値をすべて取得する実際の動き

本題に入る前に、まずは次の動画をご覧ください。


ActiveXコントロールのコンボボックスのListプロパティを使って、登録されている値を取得しています。

マクロ作成の流れ

STEP.1
ActiveXコントロールのコンボボックスに登録されている値の数分Listプロパティを使って、登録されている値を取得する
ActiveXコントロールのコンボボックスに登録されている値の数分Listプロパティを使って、登録されている値を取得します。

Excelファイルの例

今回は次のExcelファイルを用意しました。

今回のサンプルでは、コンボボックスには下の8つの値が登録されています。

コードの例

Excelのマクロのコード(例)

Option Explicit

Sub test()

    Dim cnt As Long         'カウンタ用変数
        
    With Worksheets("top")
    
        'コンボボックスに登録されている値の数分ループする
        For cnt = 0 To .cbx_itemList.ListCount - 1
        
            'コンボボックスの値を取得してD列のセルに出力する
            .Range("D" & cnt + 2).Value = .cbx_itemList.List(cnt)
    
        Next cnt
    
    End With

End Sub

注目すべきコード

見て頂きたいのは9行目から15行目です。

        'コンボボックスに登録されている値の数分ループする
        For cnt = 0 To .cbx_itemList.ListCount - 1
        
            'コンボボックスの値を取得してD列のセルに出力する
            .Range("D" & cnt + 2).Value = .cbx_itemList.List(cnt)
    
        Next cnt

以上のコードは、ActiveXコントロールのコンボボックスのListプロパティを使って、登録されている値を取得してセルに出力しているコードです。

10行目では、コンボボックスに登録されている値の数分ループさせるFor文を用意しています。

コンボボックスのListCountプロパティを使うと、コンボボックスに登録されている値の総数が分かります。

13行目では、コンボボックスのListプロパティから、コンボボックスに登録されている値を取得してセルに出力しています。

動作確認

マクロ実行前

今回はExcelファイルの例のexcelファイルを使います。

マクロ実行後

マクロ実行後は、下の画面の通りにコンボボックスに登録されている値が全て出力されました。

最後に

本記事では、シート上に配置されたActiveXコントロールのコンボボックスに登録されている値をすべて取得する方法についてご説明しました。

コンボボックスに登録されている値は、コンボボックスをクリックしないと確認ができないので、コンボボックスに登録されている値が何かを確認したい時は本記事を参考にしてみてくださいね。

Excelのスキル向上やExcelの基礎知識をしっかりと学びたいなら

Excelのスキルを習得したい、Excelの基礎知識をもっと理解したい、そう考えているなら「無期限サポート付きExcel講座【すごい改善】」がおすすめです。

Excelのスキルの基礎を身につけるなら【すごい改善】で無期限サポート付きがあるので、これで「Excelのスキルや基礎」を学ぶのにおすすめですよ。

→ 受講後、何度でも無期限でメールで質問できるアフターサポートがついているExcelマスター講座はこちら