【決定版】ActiveXコントロールのチェックボックス作成からVBAで活用する超具体的な使い方!

「ActiveXコントロールのチェックボックスってどうやって作るの?」

「VBAで操作したいけど、フォームコントロールとは何が違うの?」

ActiveXコントロールのチェックボックスは、フォームコントロールと比べて高機能のチェックボックスを作成することが出来ます。

この記事では、ActiveXコントロールのチェックボックスをゼロから作成し、VBA(マクロ)を使った操作・活用するまでの具体的な手順を解説します。


ActiveXコントロールのチェックボックスって何?フォームコントロールとの違いは?

ActiveXコントロールのチェックボックスは、主にExcelのシート上でユーザーからの「はい/いいえ」や「ON/OFF」といった選択を受け付けるために使われる、高機能なツールです。

大きな特徴は、VBA(Visual Basic for Applications)との連携が非常にスムーズである点です。

例えば、「チェックを入れたら特定の計算を実行する」「チェックを外したら色を変える」といった、細かく、複雑な動作をVBAコードで簡単にプログラミングできます。

フォームコントロールとの決定的な違い

Excelにはもう一つ「フォームコントロール」という種類のチェックボックスがあります。

この2つは見た目は似ていますが、機能と使い道が全く異なります

比較項目ActiveXコントロールフォームコントロール
連携VBAとの連携が非常に強力(イベント処理が可能)セルへのリンクが主。
VBA連携は限定的。
プロパティプロパティウィンドウで細かく設定可能(色、フォント、名前など)設定できる項目が少ない
主な用途複雑なVBA処理を伴うユーザーインターフェースシンプルな選択肢やレポート作成
でんちゃん
でんちゃん

「もっと詳しくフォームコントロールとの違いを知りたいな!」という方は、下記の記事で詳しく解説しています。是非チェックしてみてください。

フォームコントロールとActiveXコントロールのチェックボックスの違いを徹底解説!

でんちゃん
でんちゃん

チェックボックスの基本的な作り方が気になる方は、こちらの記事で基本を確認してみてください!

チェックボックスの作り方・サイズ変更・削除まで!


ActiveXコントロールのチェックボックスを作成する3つのステップ

それでは、チェックボックスを実際にシートに挿入してみましょう。

ステップ1:チェックボックスを挿入する

  1. 開発」タブをクリックします。
  2. 挿入」アイコン(ツールボックスのようなアイコン)をクリックします。
  3. 表示されたプルダウンメニューの「ActiveXコントロール」グループの中にある、チェックボックスのアイコン(左上の角がチェックされているアイコン)をクリックします。
  4. シート上のチェックボックスを配置したい場所で、マウスをドラッグしてチェックボックスのサイズを決めます。

挿入された直後は、Excelが「デザインモード」になっています。

これは、コントロール(部品)の配置や設定を変更するためのモードで、この状態ではチェックボックスをクリックしてもON/OFFが切り替わりません。

ステップ2:表示名(キャプション)を変更する

挿入直後は「CheckBox1」といった名前になっていますね。これを分かりやすい名前に変更しましょう。

  1. チェックボックスが選択されていることを確認します(もし選択されていなければ、「開発」タブの「デザインモード」がONの状態で、チェックボックスをクリックしてください)。
  2. 開発」タブの「プロパティ」をクリックします(または、右クリックメニューから「プロパティ」を選択)。
  3. 表示された「プロパティ」ウィンドウの中の(Caption)という項目を見つけます。
  4. (Caption)の右側の欄に、表示したい名前(例:「オプションAを適用する」)を入力します。

ステップ3:デザインモードを解除する

表示名の変更が終わったら、実際にチェックボックスを使える状態に戻します。

  1. 開発」タブにある「デザインモード」ボタンをクリックして、ONの状態(へこんだ状態)からOFFの状態(出っ張った状態)に戻します。
    「開発」タブにある「デザインモード」ボタンをクリックして、ONの状態(へこんだ状態)からOFFの状態(出っ張った状態)
でんちゃん
でんちゃん

これで、チェックボックスをクリックすると、チェックマークのON/OFFが切り替わるようになりました!


チェックボックスを思い通りにカスタマイズ!プロパティ設定を徹底解説

ActiveXコントロールの真骨頂は、プロパティを使って細かくカスタマイズできる点にあります。

ここでは、特によく使う重要なプロパティを紹介します。

「プロパティ」ウィンドウを開いて、以下の項目を設定してみましょう。

プロパティ名説明設定例・ポイント
(Name)VBAからコントロールを識別するための名前。最も重要です。chkOptionA(チェックボックスであることが分かるようにchkを付けると便利)
Captionチェックボックスの横に表示されるテキスト(表示名)。例:「オプションAを有効にする」
Valueチェックボックスの状態(ON/OFF)。設定値はTrueまたはFalse。デザインモード中に初期値を設定できます。
LinkedCellチェックボックスの状態(TrueまたはFalse)を書き出すセル。VBAを使わない連携に便利。例:A1(セルA1にON/OFFが出力されます)
Fontキャプションのフォント、サイズ、太字などを設定します。好きなフォント、サイズ12、Bold=True
ForeColorキャプションの文字の色を設定します。&H00FF0000& (青色)

プロパティウィンドウでは、見た目や動作に関わる設定を細かく変更できます。

これらのプロパティを活用すれば、デザイン性の高い、使いやすいチェックボックスを作成できます!


【超重要】ActiveXチェックボックスの値(ON/OFF)を取得・利用する方法

チェックボックスは、ONかOFFかによって、その後のExcelの処理を変えるために使われます。

ActiveXコントロールの場合、その状態を取得する方法は主に2つあります。

1. VBAを使わず「リンクセル」で値を取得する

最も簡単な方法は、前の章で紹介したLinkedCellプロパティを使う方法です。

  1. プロパティウィンドウで、LinkedCellに値を書き出したいセル(例:B3)を設定します。
  2. デザインモードを解除します。
  3. チェックボックスをクリックすると、設定したセル(B3)にTRUE(チェックON)またはFALSE(チェックOFF)が自動で書き込まれます。
でんちゃん
でんちゃん

このTRUE/FALSEの値を、IF関数などのExcelの関数と組み合わせることで、VBAを使わなくても条件分岐の処理を作ることができます。

2. VBA(マクロ)を使って値を取得・設定する

ActiveXコントロールの真価は、VBA(マクロ)でその値を直接操作できる点にあります。

値を取得する(現在の状態を知る)

ActiveXコントロールのチェックボックスの名前をchkOptionAとした場合、VBAでその状態を知るコードは以下のようになります。

VB.Net

‘ チェックボックスがONかOFFかを取得し、メッセージボックスに表示する
Sub CheckBox_Status()

Dim isChecked As Boolean

‘ chkOptionAの状態(True/False)を変数に格納
‘ TrueならチェックON、FalseならチェックOFF
isChecked = ActiveSheet.chkOptionA.Value

If isChecked = True Then
MsgBox “オプションAが選択されています。”, vbInformation
Else
MsgBox “オプションAは選択されていません。”, vbExclamation
End If

End Sub

実行結果

値を設定する(強制的にON/OFFを切り替える)

VBAコードで、外部からチェックボックスの状態を強制的に変更することもできます。

VB.Net

‘ チェックボックスを強制的にONにする(チェックを入れる)
Sub SetCheckBox_ON()
ActiveSheet.chkOptionA.Value = True
End Sub

‘ チェックボックスを強制的にOFFにする(チェックを外す)
Sub SetCheckBox_OFF()
ActiveSheet.chkOptionA.Value = False
End Sub

実行結果

ActiveXコントロールのチェックボックスをVBAで操作する基本コード

でんちゃん
でんちゃん

ActiveXコントロールがフォームコントロールと決定的に違うのは、ユーザーの操作(イベント)をVBAで「キャッチできる」ことです。

1. クリックイベント(_Click)で処理を実行する

ユーザーがチェックボックスをクリックした瞬間にVBAコードを実行するのが「クリックイベント」です。

  1. 「開発」タブの「デザインモード」がONの状態で、チェックボックスをダブルクリックします。
  2. VBAエディタが開き、以下のようなコードのひな形が自動で作成されます。
  3. このSubとEnd Subの間に、実行したい処理(コード)を記述します。

VB.Net

Private Sub chkOptionA_Click()

End Sub

【例】チェックON/OFFでセルの色を変える

チェックボックスの名前をchkColorChangeとし、セルA1の色を変更する例です。

VB.Net

Private Sub chkColorChange_Click()

‘ チェックボックスがON(True)の場合
If ActiveSheet.chkColorChange.Value = True Then
‘ セルA1を緑色にする
Range(“A1”).Interior.Color = RGB(0, 176, 80) ‘ 緑色
Else
‘ チェックボックスがOFF(False)の場合
‘ セルA1を色なしにする
Range(“A1”).Interior.ColorIndex = xlNone
End If

End Sub

このコードを書いたら、デザインモードを解除して、チェックボックスをクリックしてみてください。セルA1の色が緑色に変わるはずです!

2. 複数のチェックボックスを一括操作する(For Eachループ)

複数のActiveXチェックボックスを、一括でONにしたりOFFにしたりしたい場合もありますよね。そんな時は、For Eachループを使って、シート上のすべてのObjectをチェックし、チェックボックス(CheckBox)だけを操作する方法が便利です。

【例】すべてのチェックボックスをOFFにする(チェックを外す)

VB.Net

Sub All_CheckBox_OFF()

‘ シート上のすべてのOLEObject(ActiveXコントロール)をループ
Dim ctrl As OLEObject

‘ OLEObjectはActiveXコントロールの総称です
For Each ctrl In ActiveSheet.OLEObjects

‘ そのコントロールが「CheckBox」(チェックボックス)かどうかを判定
If TypeName(ctrl.Object) = “CheckBox” Then

‘ チェックボックスであれば、ValueプロパティをFalse(OFF)にする
ctrl.Object.Value = False

End If

Next ctrl

MsgBox “全てのチェックボックスをOFFにしました。”, vbInformation

End Sub

【マクロ実行前】

【マクロ実行後】

でんちゃん
でんちゃん

このコードを標準モジュールに記述して実行すれば、どんな名前のチェックボックスでも、一瞬で初期化できますよ!


ActiveXチェックボックス活用事例:条件によって処理を分ける

ActiveXコントロールのチェックボックスは、複雑な計算やデータ処理の「オプションスイッチ」として活用すると、非常に便利です。

ここでは、商品の割引計算を例に、具体的な活用イメージを見ていきましょう。

活用事例:割引計算のオプション設定

実行したい処理

  • chkMemberDiscountがON(チェックあり)の場合:
    販売価格から10%割引した価格をB3に出力する。
  • chkMemberDiscountがOFF(チェックなし)の場合
    販売価格をそのままB3に出力する(割引なし)。

VBAコード(チェックボックスのクリックイベントに記述)

VB.Net

Private Sub chkMemberDiscount_Click()

Dim originalPrice As Long
Dim finalPrice As Long

‘ 販売価格(B2セル)を取得
originalPrice = Range(“B2”).Value

‘ チェックボックスの状態を判定
If ActiveSheet.chkMemberDiscount.Value = True Then
‘ 10%割引を適用
finalPrice = originalPrice * 0.9
Else
‘ 割引なし
finalPrice = originalPrice
End If

‘ 結果をB3セルに出力
Range(“B3”).Value = finalPrice

End Sub

でんちゃん
でんちゃん

このコードを記述すれば、ユーザーがチェックを入れるだけで、瞬時に計算結果が変わり、非常に柔軟な見積もりシートなどが完成します!


ActiveXコントロールのチェックボックスでよくある質問(FAQ)

ActiveXコントロールを使う上で、つまずきやすいポイントをQ&A形式でまとめてみました。

Q
チェックボックスをクリックしても反応しません。なぜですか?
A

「デザインモード」がONになっていませんか?

ActiveXコントロールを挿入・編集する際に使う「デザインモード」がONになっていると、コントロールは編集状態になり、クリックしてもON/OFFが切り替わりません。

「開発」タブにある「デザインモード」ボタンをクリックして、OFF(へこんでいない状態)に戻してください。

Q
誤ってチェックボックスを移動・削除してしまいました。ロックできますか?
A

プロパティと図形の書式設定でロックできます。

ActiveXコントロールを挿入・編集する際に使う「デザインモード」がONになっていると、コントロールは編集状態になり、クリックしてもON/OFFが切り替わりません。

「開発」タブにある「デザインモード」ボタンをクリックして、OFF(へこんでいない状態)に戻してください。

  1. チェックボックスを右クリックし「プロパティ」を開きます。
  2. LockedプロパティをTrueに設定します。
  3. チェックボックスを右クリックし「コントロールの書式設定」を開きます。
  4. 保護」タブの「ロック」にチェックが入っていることを確認します。
  5. 最後に、シートの「校閲」タブにある「シートの保護」を実行します。

これで、デザインモードをOFFにしている間は、誤って移動や削除ができなくなります。

Q
チェックボックスのキャプションをVBAで変えたいです。どうすればいいですか?
A

Captionプロパティを操作します。

以下のコードで、チェックボックス(例:chkOptionA)の表示名を変更できます。

VB.Net

Sub ChangeCaption()
ActiveSheet.chkOptionA.Caption = “割引を適用済み”
End Sub


まとめ:ActiveXコントロールでExcel作業をレベルアップ!

でんちゃん
でんちゃん

ActiveXコントロールのチェックボックスは、フォームコントロールよりもVBAとの連携に特化した便利なツールです。

まとめ
  • 「開発」タブを表示させることが第一歩。
  • デザインモードで挿入・プロパティ設定を行い、解除して使用する。
  • 最も重要なのは(Name)プロパティ。VBAで操作するために分かりやすい名前をつけましょう。
  • _Clickイベントを使えば、ユーザーの操作に応じて複雑な処理を実行できます。

最初は難しく感じるかもしれませんが、一度VBAと連携させて動かせると、あなたのExcelスキルは格段にアップし、より効率的で、使いやすい「動く」シートが作成できるようになりますよ!

コメント

タイトルとURLをコピーしました