Excel VBAでオプションボタンはフォームコントロールとActiveXどっちがいいのか
Excelで選択肢を作るとき、オプションボタンを使う場面があります。
たとえば、
- 案A・案B・案Cから1つ選ばせたい
- 処理モードを選ばせたい
- 出力対象を選ばせたい
- 設定値をユーザーに選ばせたい
といった場面です。
ただ、Excelのオプションボタンには大きく分けて、
- フォームコントロール
- ActiveXコントロール
の2種類があります。
見た目は似ています。
しかし、安定性、扱いやすさ、VBAとの関係、他人に配布したときの壊れやすさはかなり違います。
この記事では、Excel VBAでオプションボタンを使うとき、フォームコントロールとActiveXのどちらを選ぶべきかを、実務配布用Excelの目線で整理します。
Excelのオプションボタン、フォームとActiveXで迷う問題
Excelで選択肢入力を作るとき、オプションボタンは便利です。
複数の選択肢の中から、1つだけ選ばせることができます。
いわゆるラジオボタンのような使い方です。
ただし、Excelの開発タブから挿入しようとすると、
- フォームコントロールのオプションボタン
- ActiveXコントロールのオプションボタン
の両方が出てきます。
初心者にとっては、ここがまず分かりにくいところです。
どちらも見た目は似ています。
しかし、実務で他人に配布するExcelを作るなら、単純な見た目や機能だけで選ばない方がよいです。
配布用Excelでは、便利さよりも壊れにくさが大事になるからです。
結論:配布用ならフォームコントロールが無難
結論から言うと、実務配布用Excelでは、基本的にフォームコントロールのオプションボタンが無難です。
単に選択肢を選ばせたいだけなら、フォームコントロールで十分なことが多いです。
フォームコントロールは比較的軽く、古いExcelでも扱いやすく、ActiveXより環境差の影響を受けにくい傾向があります。
一方、ActiveXのオプションボタンは高機能です。
クリック時に直接イベントを動かしたり、細かいプロパティを設定したりできます。
ただし、その分、
- セキュリティ設定
- Excelのバージョン
- ActiveXの無効化
- デザインモード
- ファイル破損
- 他人のPC環境
の影響を受けやすくなります。
自分だけが使うExcelならActiveXも選択肢になります。
しかし、他人に渡すExcel、長期運用するExcel、マクロに詳しくない人が使うExcelでは、フォームコントロールの方が安全寄りです。
迷ったら、
配布用はフォームコントロール、自分用で細かく制御したいならActiveX
と考えるのが実務的です。
フォームコントロールとActiveXのオプションボタン比較
| 項目 | フォームコントロール | ActiveXコントロール | 実務判断 |
|---|---|---|---|
| 安定性 | 比較的安定しやすい | 環境差の影響を受けやすい | 配布用はフォームが無難 |
| 設定の分かりやすさ | リンクするセルで扱える | プロパティ設定が多い | 初心者はフォームが扱いやすい |
| VBA制御 | セル値を読む形が基本 | コントロールを直接制御しやすい | 細かい制御はActiveX |
| イベント処理 | 直接イベントは弱い | Clickイベントなどを使いやすい | イベント重視ならActiveX |
| 配布時の安全性 | 比較的トラブルが少ない | 無効化・破損・反応しない事故がある | 他人に渡すならフォーム優先 |
| 長期運用 | 壊れにくさを重視しやすい | Excel更新等で影響を受ける場合がある | 長期運用はフォームが無難 |
| 初心者向けか | 比較的向いている | 仕組みを理解していないと事故りやすい | 初心者はフォーム推奨 |
ActiveXが悪いわけではありません。
ただし、配布用Excelでは、作り手の便利さより、使う側の安定性を優先した方がよいです。
フォームコントロールのオプションボタンとは
フォームコントロールのオプションボタンは、Excelに昔からあるシンプルなコントロールです。
開発タブから挿入できます。
特徴は、選択結果をセルに返せることです。
フォームコントロールのオプションボタンでは、「リンクするセル」を設定できます。
同じグループ内で何番目の選択肢が選ばれているかを、リンク先セルに数値で返します。
例えば、3つのオプションボタンがあり、リンクするセルをB2に設定した場合、
- 1番目を選ぶと B2 = 1
- 2番目を選ぶと B2 = 2
- 3番目を選ぶと B2 = 3
のように扱えます。
VBA側では、オプションボタンそのものを直接触らなくても、B2の値を読めば処理できます。
これが実務ではかなり便利です。
UIと処理を分離しやすく、コードも単純になります。
ActiveXのオプションボタンとは
ActiveXのオプションボタンは、フォームコントロールより高機能です。
クリック時に直接VBAイベントを動かせます。
たとえば、オプションボタンをクリックした瞬間に処理を走らせたり、表示を変えたり、他のコントロールと連動させたりできます。
見た目やプロパティも細かく制御できます。
そのため、
- 自分だけが使うExcel
- 社内環境が固定されているExcel
- 細かいイベント制御が必要なExcel
- UserFormに近い操作感をシート上で作りたいExcel
では、ActiveXが便利なこともあります。
ただし、他人に配布するExcelでは注意が必要です。
ActiveXは、Excelの設定や環境によって動かないことがあります。
デザインモードが有効になっているだけで反応しないこともあります。
セキュリティ設定によって無効化される場合もあります。
つまり、作った人のPCでは動くのに、使う人のPCでは動かない、という事故が起きやすいのです。
実務でフォームコントロールを選びたい場面
実務では、次のような場面ならフォームコントロールを選ぶのが無難です。
- 選択肢を1つ選ばせるだけ
- 回答結果をセルに出したいだけ
- 他人に配布するExcel
- 長期運用するExcel
- Excelのバージョンや環境がバラバラな職場
- マクロに詳しくない人も使うExcel
- 公共業務や建設コンサルの提出前チェック用Excel
特に、配布用Excelでは、UIを凝るよりも壊れにくさを優先した方がよいです。
オプションボタンで選ばせたいだけなら、フォームコントロールとリンクするセルで十分です。
選択結果をセルに出し、そのセルをVBAで読む。
この形にしておくと、仕組みが単純になります。
後で見直したときにも、何を見ればよいか分かりやすくなります。
ActiveXを選んでもよい場面
ActiveXを使ってはいけない、という話ではありません。
ActiveXを選んでもよい場面もあります。
例えば、
- 自分だけが使うExcel
- 社内環境がほぼ固定されている
- クリック時に細かいイベント処理をしたい
- プロパティを細かく制御したい
- UserFormに近い操作感をシート上で作りたい
- トラブル時に自分で直せる前提がある
こうした場合は、ActiveXも選択肢になります。
ActiveXは高機能です。
分かって使えば便利です。
ただし、配布用Excelでは、利用者の環境まで完全には管理できません。
そのため、実務配布ではActiveXの便利さより、フォームコントロールの安定性を優先した方がよい場面が多いです。
オプションボタンでありがちな事故
オプションボタンでは、次のような事故が起きがちです。
- ActiveXが突然反応しない
- デザインモードが有効になっていて動かない
- マクロが無効化されている
- グループ化がうまくできておらず、選択肢が想定通り動かない
- リンクするセルがずれている
- コピーしたときにリンクセルも変わってしまう
- 他人のPCで動作が変わる
特に多いのは、ActiveXが反応しない系のトラブルです。
作成者のPCでは問題なく動いていたのに、配布先のPCではクリックできない、イベントが動かない、選択状態が変わらない。
こうなると、利用者側では原因を特定しにくいです。
配布用Excelでは、こうした問い合わせや不具合対応のコストも考える必要があります。
その意味でも、単純な選択UIにはフォームコントロールを使う方が無難です。
フォームコントロールは「リンクするセル」で扱う
フォームコントロールのオプションボタンは、「リンクするセル」で扱うのが基本です。
リンクするセルに選択結果が入ります。
VBAでは、そのセルの値を読めばよいです。
例えば、B2セルをリンクするセルにしておけば、VBAではB2の値を見て処理を分けられます。
この方法の良いところは、コードが単純になることです。
オプションボタンの名前を探したり、ActiveXのプロパティを直接読みに行ったりしなくても済みます。
UI側はオプションボタン。
処理側はセル値。
このように分けておくと、配布用Excelでは保守しやすくなります。
コピペで試せる確認用VBAコード
以下は、フォームコントロールのオプションボタンで、B2セルに選択結果が入っている前提の確認用コードです。
B2が1なら案A、2なら案B、3なら案Cとしてメッセージを表示します。
ご注意
以下のVBAコードは、動作イメージを確認するためのサンプルです。
実行前に必ずExcelファイルのバックアップを作成してください。
業務で使用しているファイルに、いきなり貼り付けて実行しないでください。
Excelのバージョンや設定により、動作が異なる場合があります。
Sub CheckOptionButtonValue()
Dim selectedValue As Variant
selectedValue = ActiveSheet.Range("B2").Value
Select Case selectedValue
Case 1
MsgBox "案Aが選択されています。", vbInformation
Case 2
MsgBox "案Bが選択されています。", vbInformation
Case 3
MsgBox "案Cが選択されています。", vbInformation
Case Else
MsgBox "選択されていないか、想定外の値です。", vbExclamation
End Select
End Sub
このコードでは、オプションボタンそのものを直接操作していません。
リンクするセルであるB2の値だけを見ています。
フォームコントロールのオプションボタンは、このようにセル値として扱うとシンプルです。
実務配布用Excelでは、この単純さがかなり大事です。
維持DX的にはどう考えるか
維持DX的には、実務配布用Excelでは、凝ったUIより壊れにくいUIを優先します。
建設コンサル実務では、利用者のExcel環境が統一されていないことがあります。
Excelのバージョンも違います。
マクロ設定も違います。
セキュリティ設定も違います。
その状態で、ActiveXを多用したExcelを配布すると、思わぬところで動かなくなることがあります。
もちろん、ActiveXが必要な場面もあります。
しかし、単に選択肢を選ばせたいだけなら、フォームコントロールとリンクするセルで十分なことが多いです。
ツールを他人に渡すなら、作り手の便利さより、使う側の安定性を優先する。
これは、橋梁点検調書支援ツールや土木実務ツールにも共通する考え方です。
関連して読みたい記事
フォームコントロールやActiveXまわりで迷う場合は、次の記事も関連します。
- Excelマクロボタンは図形・フォームコントロール・ActiveXのどれがいいのか
- Excel VBAでActiveXボタンが動かない・反応しない原因と対処法
- Excel VBAでフォームコントロールのボタンにマクロを登録する方法
- Excel VBAでThisWorkbookとActiveWorkbookは何が違うのか
オプションボタンだけでなく、配布用Excel全体の設計として考えると、ActiveXをどこまで使うかの判断がしやすくなります。
まとめ
Excelのオプションボタンには、フォームコントロールとActiveXコントロールがあります。
実務配布用Excelでは、基本的にフォームコントロールが無難です。
ActiveXは高機能ですが、環境差やセキュリティ設定、デザインモード、無効化などの影響を受けやすいです。
単に選択肢を選ばせたいだけなら、フォームコントロールのオプションボタンとリンクするセルで十分なことが多いです。
VBAでは、そのリンクセルの値を読めば処理できます。
迷ったら、
配布用はフォームコントロール、自分用で細かく制御したいならActiveX
と考えるとよいです。
実務配布では、作り手の便利さより、使う側の安定性を優先しましょう。
維持DXノートについて
維持DXノートでは、建設コンサル実務や土木実務で使うExcel/VBAツール、Word・Excel帳票の整理を支援する小さなツールの開発メモを公開しています。
無料で使えるExcelツールも公開していますので、業務用Excelツールや帳票作成の効率化に関心がある方は、あわせてご覧ください。
関連する無料Excelツール
維持DXでは、
橋梁点検・維持管理業務向けのExcel VBAツールを無料公開しています。
- 橋梁点検調書の作成支援ツール
- 評価結果一覧作成ツール
- 旧様式から2024様式への移行支援ツール
- 成果整合確認ツール
いずれも、
実務で発生しやすい
- 転記作業
- 写真貼付
- 一覧作成
- 旧成果移行
- 整合確認
の負担を減らすための補助ツールです。
以下のフォームにメールアドレスを入力すると、
ダウンロードURLを自動返信メールでお送りします。
ご注意
ダウンロードURLは、入力いただいたメールアドレス宛に自動返信で送信されます。
ダウンロードしたExcelでマクロが実行できない場合は、
右クリック → プロパティ →「許可する」 をチェック後、再度開いてください。
(Windowsのセキュリティ機能により初回実行時にブロックされる場合があります)


コメント