【ExcelVBA入門】ユーザフォームでチェックボックスを使う方法とは

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAでチェックボックスを作ったことがありますか? 簡単なアンケートなどを作る場合にチェックボックスが使えるととても便利です。

そこで今回は、

  • チェックボックスとは
  • チェックボックスの使い方
  • プロパティの使い方
  • チェックしたチェックボックスをメッセージに表示する方法

といった基礎的なことから、応用的な方法まで、徹底的に解説します!

チェックボックスとは

はじめに、チェックボックスの基礎について紹介します。チェックボックスとは、いくつかの選択肢から候補を選ぶための方法です。

複数選択して回答する画面を作るときに便利です。画面を作るときはよく使うので、使い方を覚えておくとちょっとしたアンケートをサクッと作れるようになります。

ちなみに、テキストボックスやユーザーフォームの基礎については以下で詳しく解説しています。気になる方は以下もぜひ見てみてくださいね!

【VBA入門】ユーザーフォームの使い方(テキスト表示、カレンダー)
更新日 : 2019年4月22日
【ExcelVBA入門】ユーザフォームでテキストボックスを使う方法とは
更新日 : 2019年5月8日

チェックボックスの使い方

次に、具体的なチェックボックスの使い方について説明します。

チェックボックスの配置・設定方法

最初に、チェックボックスの配置・設定方法について説明します。

1. ツールボックスからチェックボックスを選択

2. ユーザーフォームにドラッグしてサイズを決めて配置

3. プロパティを変更

※プロパティウィンドウが出ていない場合は、「表示タブ→プロパティウィンドウ」を選択するとでてきますただ、ここまでプロパティの設定値が多いと覚えるのが大変そうですよね。以下最低限覚えておくと幸せになれるプロパティを紹介します。

プロパティ1:オブジェクト名

オブジェクト名はチェックボックスのチェック状態をVBAで操作するときに使うため、わかりやすい名前に変更しておくのがおすすめです。

chkLang1、chkLang2、chkLang3のように先頭3文字でチェックボックスとわかるようにしつつ、「グループがわかる文字 + 番号」にしておくとVBAを書くときに書きやすいです。

プロパティ2:Caption

Captionでは、チェックボックスに表示する文字列を変更することができます。チェックボックスを追加したら最初にCaptionを変更するのがおすすめです!

プロパティ3:Font

Fontでは、フォントの見た目を変えることができます。フォントサイズ、フォントタイプ、フォントカラーなどフォントに関しての設定を変えたい場合に便利です。Font項目の右側にある「…」ボタンを押すと、設定画面が出てきます。

チェックボックスの値をVBAで利用する方法

チェックボックスのチェック状態をVBAから取得、変更する方法は次の通りです。

取得方法:

オブジェクト名.Value

変更方法:

オブジェクト名.Value = 値

チェックしている場合はTrue、していない場合はFalseが返ってきます。ただ、この方法だと1つずつしか操作することができないため、チェックボックスの場合は少し不便ですよね。以下の方法で、設定されている全てのチェックボックスの状態を取得することができます。

Dim i as Integer
Dim strMessage as String
For i = 1 To チェックボックスの数
   If Me.Controls("CheckBox" & i ).Value = True Then

    strMessage  = strMessage & Me.Controls("CheckBox" & i ).Caption & vbCrLf

   End If
Next i

For文でチェックボックスの数分処理をループし、チェックされている場合のみCaptionをstrMessageに入れています。なお、この例ではチェックボックスのオブジェクト名が全て「CheckBox + 番号」となっていることを前提としています。

サンプルコード

最後に、サンプルコードを紹介します。画面にチェックボックスで言語の候補を用意して、「回答する」ボタンクリックで選択した言語がメッセージに表示されるサンプルを用意しました。

※チェックボックスのオブジェクト名は全て「CheckBox + 番号」になっています。

ユーザーフォーム:

VBAコード:

'「回答する」ボタンクリック時の処理
'
Private Sub btnRegist_Click()
  Dim i As Integer
  Dim strMessage As String
  For i = 1 To 9
    If Me.Controls("CheckBox" & i).Value = True Then

      strMessage = strMessage & Me.Controls("CheckBox" & i).Caption & vbCrLf

    End If
  Next i
  
  'チェックした言語をメッセージで表示
  MsgBox "得意な言語は以下のとおりです" & vbCrLf & _
         "--------------------------------" & vbCrLf & _
         strMessage & _
         "--------------------------------"
End Sub

実行結果:

まとめ

今回は、チェックボックスの使い方について徹底的に解説しました。チェックボックスが使えるようになると、ちょっとしたアンケートが簡単に作れるようになります。使い方も簡単なので、ぜひ使ってみてくださいね!

プログラミング学習を効率良く進めたいなら…

学習を始めたけどエラーが解決できない
作りたいものはあるけど、何から始めればいいかわからない
プログラミングに対して、このような悩みを持っている方も多いですよね。

そんな方には、弊社が運営するサブスク型のプログラミングスクール「SAMURAI ENGINEER Plus+がおすすめです。



月額2980円(税別)で、主に4つのサービスを提供させていただきます。

  • 現役エンジニアによる月1度の「マンツーマン指導」
  • 平均回答時間30分の「Q&Aサービス」
  • 作りながら学べる28種類の「教材」
  • 学習を記録&仲間と共有できる「学習ログ」

目的にあった教材を選べば、どなたでも効率よく学習できるほか、Q&Aサービスやマンツーマン指導を活用することで、挫折せずにプログラミングの習得が可能です。

プログラミングを効率的に学びたい人はもちろん、何から始めたらよいのかわからない方は、ぜひ「SAMURAI ENGINEER Plus+」をご利用ください。
まずは30日無料体験

書いた人

Sanshiro Wakizaka

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!

侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。