ユーザーフォームに配置したチェックボックスの使い方としては、基本的にチェックを入れたら指定したセルに文字や数字を記載するために使いますが、その逆の使い方でセルの値を読み取って自動的にチェックを入れることができないのかなと思ったことありませんか?

例えば住所録でDM送付「希望あり」と「希望無し」をチェックボックスで選択しておいて、個人データが呼び出された時に、ユーザーフォームのチェックボックスも自動的にチェックの有無が表示されるようにしたい。
このような場合、チェックボックスのプロパティでは状況判断する設定は無いので、IFステートメントを使って表示させることが可能なので、ご紹介いたします。
基本的なチェックボックスの使い方については重複してしまうので、ここでは省略しますので下記を参考にしてください。


セルの値からチェックボックスの状態を取得しよう
IFステートメントで取得
下の図のようにセルA1に「DM」と入力されていたら、DM希望するチェックがある状態として(True)、空欄だったらDM不要ととしてチェックが無い状態として(False)とします。
そうすることにより、セルA1の値が【DM】となっていたらチェックを入れた状態にして、空欄だったらチェックを外すことができるので、セルの状態によってチェックボックスの状態を自在にコントロールできるようになります。


それでは、ユーザーフォームに配置したコマンドボタン1をクリックするとチェックボックス1がセルA1の状態を認識してチェックの有無ができるようなVBAコードをご紹介します。
Private Sub CommandButton1_Click()
If Range(“A1”).Value = “DM” Then
CheckBox1.Value = True
Else
If Range(“A1”).Value = “” Then
CheckBox1.Value = False
End If
End If
End Sub
- コマンドボタン1がクリックされたら
- もしセルA1の値がDMだったら
- チェックボタン1の状態をチェック有にする
- そうではなく
- もしセルA1の値が空欄だったら
- チェックボックス1の状態をチェック無しにする
- Ifステートメント終了
- Ifステートメント終了
- マクロ終了


もちろん、セルA1の値を消して空欄にしたらコマンドボタンを押してもチェックボックスには何も入りません。



実際にはこのような使い方はしませんが、セルの値によってチェックボックスの状態を取得する事ができるようになるVBAコードを記述することができました。


よく見られているページ
-
エクセルの計算式の値を数字として読み取るVALUE関数
-
VBAの画面のちらつきがたった1行で解決して処理高速化する方法
-
COUNT関数を使って参加人数を自動的に数えるエクセル関数使用法
-
エクセルの時刻表示を0:00ではなく24:00にする方法
-
チェックボックスでチェック有と無しそれぞれの処理を変える方法
-
1クリックで上書き保存してエクセルファイルを閉じる方法
-
エクセル計算式が#VALUE!エラーになったセルを空欄にする方法
-
条件に一致したセルを繰り返し探してVBAで文字色を変える方法
-
コマンドボタンの色をクリックするたびに黒色と赤色を入れ替える方法
-
エクセルシートの保護したらマクロエラーになった時のVBA対処法


新着ページ