【ExcelVBA】シート上に配置されたフォームコントロールのコンボボックスに値を登録・削除するには

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

【動画】シート上に配置されたフォームコントロールのコンボボックスに値を登録・削除する実際の動き

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


シート上に配置されたフォームコントロールのコンボボックスに値を登録するには、AddItemメソッドを実行します。

また、削除はRemoveAllItemsメソッドを実行します。(1回の実行ですべての値を削除)

マクロ作成の流れ(値の登録)

STEP.1
シート上に配置されたフォームコントロールのコンボボックスのAddItemメソッドを実行して値を登録する
シート上に配置されたフォームコントロールのコンボボックスのAddItemメソッドを実行して値を登録します。

マクロ作成の流れ(値の削除)

STEP.1
シート上に配置されたフォームコントロールのコンボボックスのAddItemメソッドを実行して値を削除する
シート上に配置されたフォームコントロールのコンボボックスのAddItemメソッドを実行して値を削除します。

Excelファイルの例

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

シート上にフォームコントロールのコンボボックスが配置されており、D列にコンボボックスに登録したい値が入力されています。

コンボボックスには何も値が登録されていない状態です。

コードの例

Excelのマクロのコード:コンボボックスに値を登録(例)

Option Explicit

Sub cbx_data_add()

    Dim obj As Object       'シェイプ・コントロール用変数
    Dim cnt As Integer      'カウンタ
    
    'カウンタを初期化する
    Const rowPos As Integer = 2
        
    With Worksheets("top")
    
        'D列の表の値の数分ループさせるFor文
        For cnt = 2 To .Range("D2").End(xlDown).Row
                
            '値をコンボボックスに追加する
            .DropDowns("combobox1").AddItem .Range("D" & cnt).Value
        
        Next cnt
    
    End With

End Sub

注目すべきコード

見て頂きたいのは14行目から19行目です。

        'D列の表の値の数分ループさせるFor文
        For cnt = 2 To .Range("D2").End(xlDown).Row
                
            '値をコンボボックスに追加する
            .DropDowns("combobox1").AddItem .Range("D" & cnt).Value
        
        Next cnt

以上のコードは、シート上に配置されたフォームコントロールのコンボボックスに表の値を登録するコードです。

14行目では、表の値の数分ループさせるFor文を用意し、17行目で表の値をAddItemメソッドの引数に指定して実行することで値を登録することができます。

ちなみに、コンボボックスに名前を指定していますが(上記のコードでは「combobox1」)、コンボボックスの名前の付け方は次の記事を参考にしてください。

【Excel】シート上に配置されたボタンなどのフォームコントロールの名前を変更するには

Excelのマクロのコード:コンボボックスに値を登録(例)

Option Explicit

Sub cbx_data_del()

    'コンボボックスに登録されている値を削除する
    Worksheets("top").DropDowns("combobox1").RemoveAllItems

End Sub

注目すべきコード

見て頂きたいのは6行目です。

    'コンボボックスに登録されている値を削除する
    Worksheets("top").DropDowns("combobox1").RemoveAllItems

シート上に配置されたフォームコントロールのコンボボックスのRemoveAllItemsメソッドを実行することで登録された値をすべて削除することができます。

動作確認

①コンボボックスに値を登録

マクロ実行前

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

コンボボックスには値が何も登録されていない状態です。

マクロ実行後

マクロ実行後は、コンボボックスに表の値が全て登録されました。

②コンボボックスから値を削除

マクロ実行前

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

コンボボックスにはすでに値が登録されている状態です。

マクロ実行後

マクロ実行後は、コンボボックスから値が全て削除されました。

最後に

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

フォームコントロールのコンボボックスは、ActiveXコントロールのコンボボックスとはメソッドの使い方が違っていたり(削除の場合)、フォームコントロールのコンボボックスはDropDownsを使う、などの違いがあります。

なので、シート上に配置されたActiveXコントロールのコンボボックスに値を登録・削除したい時は本記事を参考にしてみてくださいね。

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

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

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

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