【ExcelVBA】シート上にある名前を付けたチェックボックス(フォームコントロール)のチェックを別のコントロールで切り替える方法について

この記事では、シート上にある名前を付けたチェックボックス(フォームコントロール)のチェックを別のコントロールで切り替える方法についてご説明します。

※今回は、別コントロールにActiveXコントロールのコマンドボタンを使って説明します。

【動画】Excelのシート上に設置したListboxにCSVファイルのデータを表示させている実際の動き

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


コマンドボタンをクリックすると、シート上にある名前を付けたチェックボックス(フォームコントロール)のチェック状態を判定し、チェックが付いていればチェックを外し、チェックが外れていればチェックを付けています。

シート上に設置ている名前を付けたチェックボックス(フォームコントロール)のチェックを別のコントロールで切り替える方法

シート上にある名前を付けたチェックボックス(フォームコントロール)のチェックを別のコントロールで切り替えるには、次の流れの通りに行います。

作業の流れ

STEP.1
【Listbox】シート上にフォームコントロールのチェックボックスを設置
シート上にフォームコントロールのチェックボックスを設置します。
STEP.2
【コマンドボタン】シート上にActiveXコントロールのコマンドボタンを設置
シート上にActiveXコントロールのコマンドボタンを設置します。
STEP.3
【マクロ】シート上にある名前を付けたチェックボックス(フォームコントロール)のチェック状態を判定し、チェックの有無を判定
シート上にある名前を付けたチェックボックス(フォームコントロール)のチェック状態を判定し、チェックの有無を判定します。
STEP.4
【マクロ】シート上にある名前を付けたチェックボックス(フォームコントロール)にチェックが付いている場合はチェックを外し、チェックが付いていなければチェックを付ける
シート上にある名前を付けたチェックボックス(フォームコントロール)にチェックが付いている場合はチェックを外し、チェックが付いていなければチェックを付けます。

【STEP.1】シート上にフォームコントロールのチェックボックスを設置

シート上にフォームコントロールのチェックボックスを設置します。

ここでは、チェックボックスの文字は削除します。

【STEP.2】シート上にフォームコントロールのチェックボックスを設置

シート上にActiveXコントロールのコマンドボタンを設置します。

【STEP.3】シート上にある名前を付けたチェックボックス(フォームコントロール)のチェック状態を判定し、チェックの有無を判定

シート上にある名前を付けたチェックボックス(フォームコントロール)のチェック状態を判定し、チェックの有無を判定します。

【STEP.4】シート上にある名前を付けたチェックボックス(フォームコントロール)にチェックが付いている場合はチェックを外し、チェックが付いていなければチェックを付ける

シート上にある名前を付けたチェックボックス(フォームコントロール)にチェックが付いている場合はチェックを外し、チェックが付いていなければチェックを付けます。

コードの例

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

Private Sub CommandButton1_Click()

    If CheckBoxes("cbx_test").Value = xlOn Then
    
        'チェックボックスにチェックが付いている場合
    
        'チェックボックスをOFFにする
        CheckBoxes("cbx_test").Value = xlOff
        
    ElseIf CheckBoxes("cbx_test").Value = xlOff Then
    
        'チェックボックスにチェックが付いていない場合
    
        'チェックボックスをONにする
        CheckBoxes("cbx_test").Value = xlOn
        
    End If

End Sub

コードの解説

コードは、チェックボックスのONOFFの状態を判定し、チェックが付いている場合はチェックを外し、チェックが付いていなければチェックを付けています。

チェックボックスには「cbx_test」という名前が付けられており、その「cbx_test」というチェックボックスを特定するには「CheckBoxes(“cbx_test”)」とコードに書きます。

チェックボックスが特定できれば、そのチェックボックスのプロパティに値を判定したり、設定することができます。

なお、チェックボックスのチェックの状態はValueプロパティの値で判定することができます。

チェックボックスのチェックがONの状態のときはValueプロパティが1、OFFの状態のときは-4146の値が設定されています。

チェックボックスのチェックをONにしたい場合は1を、OFFにしたい時は-4146の値をValueプロパティに設定します。

なお、コードのxlOnとxlOffは定数で、xlOnは1、xlOffは-4146という値のことを意味します。

動作確認

マクロを実行後、実際にチェックボックスの表示は次の画像の通りです。

チェックボックスのチェックが付いている状態でコマンドボタンをクリックした後のチェックボックスの状態

チェックボックスのチェックが外れました。

チェックボックスのチェックが外れた状態でコマンドボタンをクリックした後のチェックボックスの状態

チェックボックスのチェックが付きました。

最後に

本記事では、シート上にある名前を付けたチェックボックス(フォームコントロール)のチェックを別のコントロールで切り替える方法についてご説明しました。

チェックボックスのチェックはValueプロパティの値を、ONOFFそれぞれ用の値を設定すればOKです。

ONは1または定数「xlOn」を、OFFは-4146または定数「xlOff」をValueプロパティに設定します。

また、チェックボックスを特定するには「CheckBoxes」の引数にチェックボックスの名前を設定します。

例えば、cbx_testという名前のチェックボックスを特定するなら「CheckBoxes(“cbx_test”)」とコードに書きます。

シート上にある名前を付けたチェックボックス(フォームコントロール)のチェックを別のコントロールで切り替えたい場合は本記事を参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら