大体でIT
大体でIT
2020/9/18
Excel VBAでオプションボタンの値を取得して変更後セルに反映する方法についてご紹介します。オプションボタンの操作性を上げるためイベントコードとクリアする方法、グループにする方法が使えます。
この記事ではオプションボタンの使い方、セルに反映する方法、クリアする方法、初期値を設定する方法についてご紹介します。
アンケートフォームの作成などでいずれか一つの値を選択してほしいといった場合にオプションボタンが必要になってきます。
今回ご紹介する方法で基本的なオプションボタンの操作ができますのでご参考になるかと思います。
オプションボタンの使い方
オプションボタンをグループにする
オプションボタンの初期値設定
オプションボタンの値をセルに反映
オプションボタンのクリア
ユーザーフォーム中でオプションボタンは一つだけ選択できるようになっています。
例えばアンケートなどでいずれか一つ選んでください。みたいな使い方をしたい場合に使えます。
オプションボタン
選択してみる
選択されました。別のオプションボタンを選択してみます。
別のボタンを選択してみる
新しく選択したオプションボタンのみ選択されています。前に選択したオプションボタンの選択は解除されました。
オプションボタンでは特に設定をしていなくてもオプションボタンのいずれか一つだけを選択させることができます。
オプションボタンはツールボックスのこちらからユーザーフォームに作成することができます。
ツールボックス
ユーザーフォームにドラッグ&ドロップで作成できます。
オプションボタンを挿入
ユーザーフォームにオプションボタンを作成できました。
オプションボタンをグループにする方法についてご紹介します。
グループにすればグループ単位でオプションボタンの選択をすることができます。
グループにしたときのオプションボタンの動作について先に紹介します。
グループにしたオプションボタン
グループごとに選択してみる
それぞれのグループでオプションボタンを選択できています。
オプションボタンはユーザーフォームの中で1つしか選択できませんがグループを使えばグループ単位でオプションボタンを選択することができます。
VBAの画面のツールボックスから『フレーム』を選択してユーザーフォームの中に挿入します。
フレーム
このフレームを2つユーザーフォームの中に挿入します。
フレームを挿入
次に作成したフレームの中にオプションボタンを挿入していきます。
オプションボタンをフレームの中に挿入
グループにしたオプションボタン
これでオプションボタンをグループにすることができます。意外と簡単です。
オプションボタンで選択した値を取得してセルに反映する方法を説明します。
オプションボタンを選択
セルに反映する
選択すると値は『True』となり、選択されていない値は『False』となっています。
オプションボタンの値をセルに反映するVBAコードです。
'ボタンクリックで実行
Private Sub CommandButton1_Click()
'オプションボタンの値をセルに反映
ActiveSheet.Cells(1, 1) = OptionButton1.Value
ActiveSheet.Cells(2, 1) = OptionButton2.Value
ActiveSheet.Cells(3, 1) = OptionButton3.Value
End Sub
ボタンをクリックした際に実行するコード『Private Sub CommandButton1_Click()』を使います。
オプションボタンの値は『OptionButton1.Value』で取得できて、選択は『True』で選択していない場合は『False』になります。
取得したオプションボタンの値をセル『ActiveSheet.Cells(1, 1)』に反映しています。
これでオプションボタンの値をセルに反映することができます。
オプションボタンの値をイベントで取得してセルに反映する方法についてご紹介します。
オプションボタンの値に変更があったときその値をセルへ反映するということをします。
ボタンをクリックしないでオプションボタンの値をすぐにセルに反映したいといった場合に参考になるかと思います。
オプションボタンの値をイベントで取得してセルに反映した結果からみていきます。
ユーザーフォームを開く
2番目のオプションボタンを選択
オプションボタンの値が変更されたタイミングでセルに反映できています。
Changeのイベントを使ってオプションボタンの値をセルに反映するVBAコードです。
'オプションボタンの値変更で実行
Private Sub OptionButton1_Change()
'オプションボタンの値をセルに範囲
ActiveSheet.Cells(1, 1) = OptionButton1.Value
End Sub
'オプションボタンの値変更で実行
Private Sub OptionButton2_Change()
'オプションボタンの値をセルに範囲
ActiveSheet.Cells(2, 1) = OptionButton2.Value
End Sub
'オプションボタンの値変更で実行
Private Sub OptionButton3_Change()
'オプションボタンの値をセルに範囲
ActiveSheet.Cells(3, 1) = OptionButton3.Value
End Sub
オプションボタンの値が変更された際に実行するコードは『Private Sub OptionButton1_Change()』になります。
このコードの中にオプションボタンの値をセルに反映するコード『ActiveSheet.Cells(1, 1) = OptionButton1.Value』を記載します。
それぞれのオプションボタンに対してVBAコードを記載すると完成です。
これでオプションボタン変更時に値をセルに反映することができます。
オプションボタンは一度クリックするとすべてのオプションボタンを選択していない状態にすることができなくなります。
初期状態からオプションボタンを入力したい場合にクリアする方法が使えます。
まずオプションボタンをクリアした結果からみてみます。
オプションボタンを選択
ボタンをクリックしてオプションボタンの値をクリアしてみます。
オプションボタンをクリア
すべてのオプションボタンが選択されていない状態にできました。
オプションボタンをクリアするVBAコードを説明します
'ボタンクリックで実行
Private Sub CommandButton1_Click()
'オプションボタンの値をクリア
OptionButton1.Value = False
OptionButton2.Value = False
OptionButton3.Value = False
End Sub
オプションボタンの値をクリアするには『OptionButton1.Value = False』というふうに『False』をオプションボタンの値に入力してやるとできます。
このVBAコードではボタンクリックで実行するコード『Private Sub CommandButton1_Click()』を使用してこの中にクリアのコードを記載しています。
これでオプションボタンをクリアすることができます。
セルから初期値を取得してオプションボタンに設定する方法をご紹介します。
さっき入力したオプションボタンの値をやっぱり変更したいな。という場合に使えます。
セルにオプションボタンの入力を保存しておいて初期値として取得して続きから始めるといった具合です。
オプションボタンの初期値をセルから取得した結果から説明します。
セルに入力されている値
初期値を取得
セルからオプションボタンの初期値が取得できました。
セルからオプションボタンの初期値を取得するVBAコードです。
'ユーザーフォームを開いた際に実行
Private Sub UserForm_Initialize()
'セルの値からオプションボタンの初期値を設定
OptionButton1.Value = ActiveSheet.Cells(1, 1)
OptionButton2.Value = ActiveSheet.Cells(2, 1)
OptionButton3.Value = ActiveSheet.Cells(3, 1)
End Sub
ユーザーフォームを開いた際に実行するコード『Private Sub UserForm_Initialize()』を使用しています。
オプションボタンの値『OptionButton1.Value』にセルの値『Activesheet.Cells(1,1)』を入力することでオプションボタンにセルの値を設定することができます。
これをオプションボタンの数だけ記載すればセルからオプションボタンの初期値を設定することができます。
応用でもないですが、これまで紹介したセルから初期値取得、セルへ反映、クリアする方法をまとめるとこんな感じになります。
ユーザーフォームを開く
セルからオプションボタンに初期値が取得されています。
グループにしたオプションボタンと登録ボタン、クリアボタンを用意しています。
オプションボタンの値を変更する
登録のボタンでオプションボタンの値をセルに反映してみます。
オプションボタンの値をセルに反映
次に、やっぱり最初から入力し直したいのでクリアしたい。ということでクリアしてみます。
オプションボタンをクリアする
オプションボタンがすべて解除されて、セルの値もすべてFalseになりました。
'ボタンクリックで実行
Private Sub UserForm_Initialize()
For i = 1 To 6
'セルからオプションボタンの初期値を取得
Controls("OptionButton" & i).Value = ActiveSheet.Cells(i, 1)
Next
End Sub
'ボタンクリックで実行
Private Sub CommandButton1_Click()
'オプションボタンのループ
For i = 1 To 6
'オプションボタンの値をセルに反映
ActiveSheet.Cells(i, 1) = Controls("OptionButton" & i).Value
Next
End Sub
'ボタンをクリックで実行
Private Sub CommandButton2_Click()
'オプションボタンのループ
For i = 1 To 6
'オプションボタンをクリア
Controls("OptionButton" & i).Value = False
'セルをクリア
ActiveSheet.Cells(i, 1) = False
Next
End Sub
初期値の取得、セルに反映、クリアのコードを記載しました。それぞれ解説していきます。
初期値
初期値を取得するためユーザーフォームが開かれた際に実行するコード『Private Sub UserForm_Initialize()』を使用します。
このコードの中にセルからオプションボタンに初期値を設定するコード『Controls("OptionButton" & i).Value = ActiveSheet.Cells(i, 1)』を記載します。
オプションボタンが増えましたので『Controls』を使って『OptionButton1.Value』の数字部分を変数にしています。
セルに反映
ボタンクリックでセルに反映したいのでボタンクリック時に実行するコード『Private Sub CommandButton1_Click()』を使用しています。
このコードの中にオプションボタンの値をセルに反映するコード『ActiveSheet.Cells(i, 1) = Controls("OptionButton" & i).Value』を記載します。
こちらもオプションボタンの数が多いので『Controls』を使っています。
クリア
ボタンクリックでオプションボタンをクリアしたいのでボタンクリック時に実行するコード『Private Sub CommandButton2_Click()』を使用しています。
このコードの中にオプションボタンの値をクリアするコード『Controls("OptionButton" & i).Value = False』を記載します。
また、セルの値もクリアしたいのでFalseを入力するコード『ActiveSheet.Cells(i, 1) = False』を記載しています。
この記事ではオプションボタンの使い方、セルに反映する方法、クリアする方法、初期値を設定する方法についてご紹介しました。
アンケートフォームの作成などでいずれか一つの値を選択してほしいといった場合にオプションボタンが必要になってきます。
今回ご紹介した方法で基本的なオプションボタンの操作ができますのでご参考になるかと思います。
最後までご覧くださいましてありがとうございました。