大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAでオプションボタンの値を取得して変更後セルに反映する方法についてご紹介します。オプションボタンの操作性を上げるためイベントコードとクリアする方法、グループにする方法が使えます。

はじめに

この記事ではオプションボタンの使い方、セルに反映する方法、クリアする方法、初期値を設定する方法についてご紹介します。

アンケートフォームの作成などでいずれか一つの値を選択してほしいといった場合にオプションボタンが必要になってきます。

今回ご紹介する方法で基本的なオプションボタンの操作ができますのでご参考になるかと思います。

この記事で紹介すること

  • オプションボタンの使い方
  • オプションボタンをグループにする
  • オプションボタンの初期値設定
  • オプションボタンの値をセルに反映
  • オプションボタンのクリア

目次から見たい項目へ移動すると便利ですよ。

目次

Excel VBAのオプションボタンの使い方

オプションボタンの使い方について説明します。

ユーザーフォーム中でオプションボタンは一つだけ選択できるようになっています。

例えばアンケートなどでいずれか一つ選んでください。みたいな使い方をしたい場合に使えます。

使い方

オプションボタンはこんなやつです。

オプションボタン

オプションボタンの画像

初期値ではオプションボタンは選択されていません。

オプションボタンを選択してみます。

選択してみる

オプションボタンを選択した場合

選択されました。別のオプションボタンを選択してみます。

別のボタンを選択してみる

別のオプションボタンを選択した場合

新しく選択したオプションボタンのみ選択されています。前に選択したオプションボタンの選択は解除されました。

オプションボタンでは特に設定をしていなくてもオプションボタンのいずれか一つだけを選択させることができます。

作成方法

オプションボタンはツールボックスのこちらからユーザーフォームに作成することができます。

ツールボックス

ツールボックスからオプションボタンを作成

ユーザーフォームにドラッグ&ドロップで作成できます。

オプションボタンを挿入

オプションボタンの作成

ユーザーフォームにオプションボタンを作成できました。

オプションボタンをグループにする

オプションボタンをグループにする方法についてご紹介します。

グループにすればグループ単位でオプションボタンの選択をすることができます。

グループにした結果

グループにしたときのオプションボタンの動作について先に紹介します。

グループにするとこんな感じになります。

グループにしたオプションボタン

オプションボタンをグループにしたもの

それぞれのグループの中から選択してみます。

グループごとに選択してみる

それぞれのグループのオプションボタンを選択する

それぞれのグループでオプションボタンを選択できています。

オプションボタンはユーザーフォームの中で1つしか選択できませんがグループを使えばグループ単位でオプションボタンを選択することができます。

グループにする方法

グループにする方法を説明します。

2つのグループを作成してみます。

VBAの画面のツールボックスから『フレーム』を選択してユーザーフォームの中に挿入します。

ツールボックスの『フレーム』はこちらです。

フレーム

ツールボックスのフレーム

このフレームを2つユーザーフォームの中に挿入します。

フレームを挿入

ユーザーフォームにフレームを挿入する

次に作成したフレームの中にオプションボタンを挿入していきます。

オプションボタンをフレームの中に挿入

フレームの中にオプションボタンを挿入する

フレームの中にオプションボタンを挿入しました。

グループにしたオプションボタン

オプションボタンをグループする

これでオプションボタンをグループにすることができます。意外と簡単です。

オプションボタンの値を取得してセルに反映

オプションボタンで選択した値を取得してセルに反映する方法を説明します。

結果

まずは結果からみてみます。

オプションボタンを1つ選択します。

オプションボタンを選択

オプションボタンを選択する

ボタンをクリックして値をセルに反映します。

セルに反映する

オプションボタンの値をセルに反映する

セルにオプションボタンの値が反映されました。

選択すると値は『True』となり、選択されていない値は『False』となっています。

VBAコード

オプションボタンの値をセルに反映する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番目のオプションボタンを選択してみます。

2番目のオプションボタンを選択

2番目のオプションボタンを選択

2番目のセルの値が『True』になりました。

オプションボタンの値が変更されたタイミングでセルに反映できています。

VBAコード

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コードを記載すると完成です。

これでオプションボタン変更時に値をセルに反映することができます。

オプションボタンをクリア

オプションボタンをクリアする方法をご紹介します。

オプションボタンは一度クリックするとすべてのオプションボタンを選択していない状態にすることができなくなります。

初期状態からオプションボタンを入力したい場合にクリアする方法が使えます。

結果

まずオプションボタンをクリアした結果からみてみます。

オプションボタンの3番目を選択してみます。

オプションボタンを選択

オプションボタンを選択する

ボタンをクリックしてオプションボタンの値をクリアしてみます。

オプションボタンをクリア

ボタンクリックでオプションボタンをクリアする

すべてのオプションボタンが選択されていない状態にできました。

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コード

セルからオプションボタンの初期値を取得する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)』を入力することでオプションボタンにセルの値を設定することができます。

これをオプションボタンの数だけ記載すればセルからオプションボタンの初期値を設定することができます。

ちょっと応用

応用でもないですが、これまで紹介したセルから初期値取得、セルへ反映、クリアする方法をまとめるとこんな感じになります。

VBAコードを実行した結果からみてみます。

結果

ユーザーフォームを開いてみます。

ユーザーフォームを開く

オプションボタンを応用した例

セルからオプションボタンに初期値が取得されています。

グループにしたオプションボタンと登録ボタン、クリアボタンを用意しています。

オプションボタンの値を変更してみます。

オプションボタンの値を変更する

オプションボタンの値を変更する

登録のボタンでオプションボタンの値をセルに反映してみます。

オプションボタンの値をセルに反映

ボタンでオプションボタンの値をセルに反映

セルに値が反映されました。

次に、やっぱり最初から入力し直したいのでクリアしたい。ということでクリアしてみます。

オプションボタンをクリアする

オプションボタンの値をクリアする

オプションボタンがすべて解除されて、セルの値もすべてFalseになりました。

VBAコード

ちょっと応用のVBAコードはこちらです。

『ユーザーフォームの中のコード』に記載します。

'ボタンクリックで実行
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』を記載しています。

おわりに

この記事ではオプションボタンの使い方、セルに反映する方法、クリアする方法、初期値を設定する方法についてご紹介しました。

アンケートフォームの作成などでいずれか一つの値を選択してほしいといった場合にオプションボタンが必要になってきます。

今回ご紹介した方法で基本的なオプションボタンの操作ができますのでご参考になるかと思います。

最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す