大体でIT

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

大体でIT

Excel VBAのユーザーフォームでチェックボックスの値取得と判定方法、またチェックボックスとセルを連動させる方法についてご紹介します。セルとの連動は初期設定と複数のチェックボックスの判定とChangeイベントを使って作ることができます。

はじめに

こちらの記事ではチェックボックスの判定、表示変更、操作、セルとの連動についてご紹介します。

選択肢の設定の効率化にはチェックボックスは必要なものとなりますのでわかっておくと大変便利です。

こちらの記事で紹介することです。

この記事で紹介すること

  • チェックボックスの判定
  • チェックボックスの表示変更
  • チェックボックスの操作
  • チェックボックスとセルの連動

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

目次

Excel VBAのユーザーフォームでチェックボックスを作成

Excel VBAのユーザーフォームでチェックボックスを作成する方法を説明します。

VBA画面の『表示』⇒『ツールボックス』をクリックすると次の画面が表示されます。

ツールボックス

ツールボックス

この画面の中からチェックボックスを選択してユーザーフォームの中にドラッグ&ドロップで使用できます。

こんなフォームです。

チェックボックス

チェックボックス

ではチェックボックスの使い方について説明していきます。

チェックボックスの値を取得して判定

チェックボックスの値を取得して判定する方法です。

判定

チェックボックスの値の取得は『CheckBox1.Value』を使えば取得できます。

VBAコードはこちらです。『ユーザーフォームの中のコード』に記載します。

'ボタンクリックで実行
Private Sub CommandButton1_Click()
    
    'チェックボックスの判定
    MsgBox CheckBox1.Value
    
End Sub

チェックボックスの値はチェックがついていると『True』で、チェックがついていないと『False』となります。

チェックをつけた場合です。

チェックをつけた場合の判定

チェックボックスにチェックをつけた判定結果

判定はTrueとなります。

チェックをはずします。

チェックをはずした場合の判定

チェックボックスをはずした判定結果

判定はFalseとなります。

チェックボックスの値を判定して条件分岐したい場合は『If CheckBox1.Value = True Then』のようにしてできます。

複数の判定

複数のチェックボックスの判定をする方法です。『Controls』を使うと便利です。

VBAコードはこちらです。『ユーザーフォームの中のコード』に記載します。

'ボタンをクリックで実行
Private Sub CommandButton1_Click()
    
    a = ""
    'CheckBox1~CheckBox5
    For i = 1 To 5
        'チェックボックスの値を取得
        a = a & Controls("CheckBox" & i) & vbLf
    Next
    
    MsgBox a
    
End Sub

チェックボックスの名前に変数を入れられる『Controls』を使っています。

『Controls("CheckBox" & i)』というように記載して変数iを入れてForでループするとコードがすっきりします。

複数のチェックボックスの判定結果はこちらです。

複数のチェックボックスの判定

複数のチェックボックスの判定結果

チェックボックスでチェックをつけたところが『True』となっています。その他は『False』となっています。

チェックボックスの表示変更

チェックボックスの表示を変更する方法です。

プロパティで変更する方法とコードで変更する方法があります。

プロパティで変更

プロパティで変更する方法が説明します。

VBA画面のプロパティで『Caption』のところを変更します。ここです。

チェックボックスの表示をプロパティで変更

VBA画面のプロパティでCaptionを変更

Captionのところを変更するとチェックボックスの表示を変更することができます。

こんな感じになります。

チェックボックスの表示をプロパティで変更した結果

キャプションの変更

『チェックボックス1』という表示に変更できました。

コードで変更

VBAコードでチェックボックスの表示を変更する方法です。

チェックボックスの表示を条件によって自由に変更したい場合に使えます。

表示の変更は『.Caption』を使います。

VBAコードはこちらです。『ユーザーフォームの中のコード』に記載します。

'ボタンクリックで実行
Private Sub CommandButton1_Click()
    
    'チェックボックスの表示を変更
    CheckBox1.Caption = "チェックボックス1"

End Sub

VBAを実行してみます。

チェックボックスの表示をCaptionで変更した結果

VBAコードでチェックボックスの表示を変更した結果

チェックボックスの表示を『チェックボックス1』に変更できました。

チェックボックスの操作(チェックをつける・はずす)

チェックボックスのチェックをつける方法とはずす方法について説明します。

1つのチェックボックス

チェックボックスに『True』もしくは『False』を入力すればできます。

VBAコードはこちらです。『ユーザーフォームの中のコード』に記載します。

'ボタンクリックで実行
Private Sub CommandButton1_Click()
    
    'チェックボックスのチェックをつける
    CheckBox1.Value = True
    
End Sub

'ボタンクリックで実行
Private Sub CommandButton2_Click()
    
    'チェックボックスのチェックをはずす
    CheckBox1.Value = False
    
End Sub

チェックをつけたい場合は、『CheckBox1.Value = True』とします。

チェックボックスにチェックをつける

チェックをつけた結果

チェックがついています。

チェックをはずしたい場合は、『CheckBox1.Value = False』とします。

チェックボックスのチェックをはずす

チェックをはずした結果

チェックがはずれています。

複数のチェックボックス

複数のチェックボックスを操作する方法を説明します。

複数の場合は、『Controls』を使うと便利です。

VBAコードはこちらです。『ユーザーフォームの中のコード』に記載します。

'ボタンクリックで実行
Private Sub CommandButton1_Click()
    
    'CheckBox1~5
    For i = 1 To 5
        'チェックボックスにチェックをつける
        Controls("CheckBox" & i) = True
    Next
    
End Sub

'ボタンクリックで実行
Private Sub CommandButton2_Click()
    
    'CheckBox1~5
    For i = 1 To 5
        'チェックボックスのチェックをはずす
        Controls("CheckBox" & i) = False
    Next
    
End Sub

CheckBox1~CheckBox5までを『Controls("CheckBox" & i)』で変数を入れて表現しています。

チェックをつけたい場合は、『True』をチェックボックスに入力します。実行するとこのようになります。

すべてのチェックボックスにチェックをつける

すべてのチェックボックスにチェックをつける

すべてのチェックボックスにチェックがついています。

チェックをはずす場合は、『False』をチェックボックスに入力します。このようになります。

すべてのチェックボックスのチェックをはずす

すべてのチェックボックスのチェックをはずす

すべてのチェックボックスのチェックがはずれています。

チェックボックスのChangeイベント

チェックボックスの値が変わった際に実行するChangeイベントについて説明します。

ボタンなどを作らずチェックボックスの値変更で実行できるので便利です。

VBAコードはこのようになります。『ユーザーフォームの中のコード』に記載します。

'CheckBox6の変更で実行
Private Sub CheckBox6_Change()
    
    'CheckBox1~CheckBox5
    For i = 1 To 5
        'チェックボックスにCheckBox6の値を入力
        Controls("CheckBox" & i).Value = CheckBox6.Value
    Next
    
End Sub

チェックボックスの値変更で実行するコードは『Private Sub CheckBox6_Change()』といいうように記載します。

一番したのチェックボックス『CheckBox6』を変更した際にその他のチェックボックスを『CheckBox6』と同じ値としています。

『CheckBox6』のチェックをつけるとこのようになります。

Changeイベントでチェックをつける

Changeイベントでチェックをつけた結果

CheckBox1~CheckBox6にチェックがついています。

『CheckBox6』のチェックをはずした場合はこのようになります。

Changeイベントでチェックをはずす

Changeイベントでチェックをはずした結果

CheckBox1~CheckBox6のチェックがはずれています。

チェックボックスをセルと連動

チェックボックスの値とセルを連動させる方法についてご紹介します。

2パターンあって、『Changeイベントとチェックボックスの値取得』と『プロパティを使う』方法について説明します。

Changeイベントとチェックボックスの値取得

先ほど説明したChangeイベントとチェックボックスの値取得を組み合わせます。

VBAコードはこちらです。『ユーザーフォームの中のコード』に記載します。

'ユーザーフォームを開いたとき実行
Private Sub UserForm_Initialize()
    
    'セルの値をチェックボックスに入力
    CheckBox1.Value = ActiveSheet.Cells(1, 1)
    
End Sub

'チェックボックスを変更したときに実行
Private Sub CheckBox1_Change()
    
    'チェックボックスの値をセルに入力
    ActiveSheet.Cells(1, 1) = CheckBox1.Value
    
End Sub

最初に初期値でセルに入力された値をチェックボックスに入力します。

初期値は『Private Sub UserForm_Initialize()』の中にコードを記載すると設定できます。

セルの値をチェックボックスへ入力は『CheckBox1.Value = セル』でできます。

初期値でセルの値を取得するとこのようになります。

初期値でセルからチェックボックスに値を入力

初期値でセルの値をチェックボックスへ入力

セルが『True』なのでチェックボックスにチェックがついています。

チェックボックスの値をはずすとこのようになります。

Changeイベントでチェックボックスの値をセルに入力

Changeイベントでチェックボックスの値を取得してセルに入力

セルの値が『False』となっています。

Changeイベントでチェックボックスの値が変わると『セル = CheckBox1.Value』でチェックボックスの値を取得してセルへ入力しています。

プロパティを使う

VBA画面のプロパティを使用してセルとチェックボックスを連動させる方法を紹介します。

チェックボックスのプロパティで『ControlSource』にセルの範囲を入力するとできます。ここに入力します。

チェックボックスのプロパティでControlSourceを使う

チェックボックスのプロパティのControlSource

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

セルと連動したチェックボックスを開く

プロパティを使ってセルと連動したチェックボックスを開いた結果

セルの値が『True』なのでチェックボックスにチェックがついた状態となっています。

チェックボックスをはずしてみます。

セルと連動したチェックボックスのチェックをはずす

プロパティを使ってセルと連動したチェックボックスのチェックをはずした結果

セルの値が『False』となっています。

チェックボックスとセルが連動していることがわかります。

ちょっと応用編

少し応用編で、セルと連動したチェックボックスとChangeイベント、複数チェックボックスの操作を組み合わせてみます。

セルと連動・Changeイベント・複数の操作を組み合わせ

チェックボックスをセルと連動させながらすべてのチェックをつける・はずすができます。

VBAコードはこちらです。『ユーザーフォームの中のコード』に記載します。

'ユーザーフォームを開いたとき実行
Private Sub UserForm_Initialize()
    
    'CheckBox1~CheckBox5
    For i = 1 To 5
        'セルの値をチェックボックスに入力
        Controls("CheckBox" & i).Value = ActiveSheet.Cells(i, 1)
    Next
    
    'チェックをはずす
    CheckBox6.Value = False
    
End Sub

'チェックボックスを変更したとき実行
Private Sub CheckBox1_Change()
    'セルにチェックボックスの値を入力
    ActiveSheet.Cells(1, 1) = CheckBox1.Value
End Sub

'チェックボックスを変更したとき実行
Private Sub CheckBox2_Change()
    'セルにチェックボックスの値を入力
    ActiveSheet.Cells(2, 1) = CheckBox2.Value
End Sub

'チェックボックスを変更したとき実行
Private Sub CheckBox3_Change()
    'セルにチェックボックスの値を入力
    ActiveSheet.Cells(3, 1) = CheckBox3.Value
End Sub

'チェックボックスを変更したとき実行
Private Sub CheckBox4_Change()
    'セルにチェックボックスの値を入力
    ActiveSheet.Cells(4, 1) = CheckBox4.Value
End Sub

'チェックボックスを変更したとき実行
Private Sub CheckBox5_Change()
    'セルにチェックボックスの値を入力
    ActiveSheet.Cells(5, 1) = CheckBox5.Value
End Sub

'チェックボックスを変更したとき実行
Private Sub CheckBox6_Change()
    'CheckBox1~CheckBox5
    For i = 1 To 5
        'チェックボックスにCheckBox6の値を入力
        Controls("CheckBox" & i).Value = CheckBox6.Value
    Next
End Sub

最初に初期値設定『Private Sub UserForm_Initialize()』でセルの値をチェックボックスに入力しています。

初期値でセルの値をチェックボックスに入力

初期値でセルの値をチェックボックスに入力

セルの値は2番目と4番目が『True』なので『CheckBox2』と『CheckBox4』にチェックがついています。

チェックボックスを変更するとセルも連動して値が変更されます。

チェックボックスの変更でセルに値を入力

チェックボックスの値を変更した結果

CheckBox1, 3, 4のチェックをつけているのでセルの1, 3, 4番目の値が『True』になっています。

すべてのチェックを操作する『CheckBox6』にチェックをつけてみます。

複数のチェックボックスに自動でチェックをつけてセルにも入力

すべてのチェックボックスにチェックがついた結果

すべてのチェックボックスにチェックがついています。

『CheckBox6』のチェックをはずしてみます。

複数のチェックボックスのチェックを自動ではずしてセルにも入力

すべてのチェックボックスのチェックをはずした結果

すべてのチェックボックスのチェックがはずれています。

おわりに

こちらの記事ではチェックボックスの判定、表示変更、操作、セルとの連動についてご紹介しました。

選択肢の設定の効率化にはチェックボックスは必要なものとなりますのでわかっておくと大変便利です。

ご参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

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

アーカイブから探す