複数のチェックボックスを一括で選択できる方法を考えてみました!
フォームコントロールのチェックボックスを使用する。
以下手順
1. チェックボックス選択
「開発」→「挿入」→「チェックボックス(フォーム コントロール)」
2. 任意のシートにチェックボックス配置(今回はSheet1)
3. コード表示
以下ソース
Sub 一括チェックボタン1_Click()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(“Sheet1”)
Dim i As Long, j As Long
‘チェックボックスの数をカウントする
j = ActiveSheet.CheckBoxes.Count
‘2つ目以降のチェックボックスが対象なのでForの始まりは2から
For i = 2 To j
ws.CheckBoxes(i).Value = ws.CheckBoxes(1).Value
Next i
End Sub
4. マクロの登録
起点となるチェックボックスを右クリック ⇒ 「マクロの登録」
ソース解説
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(“Sheet1”)
言葉にすると
このブックのワークシートの名Sheet1をwsにセットします。
これで変数wsはSheet1のワークシートを表す変数になりました。
例えば
ws.Range(“A1”).Valueとあれば
Sheet1のA1セルの値という意味になります。
j = ActiveSheet.CheckBoxes.Count
ActiveSheetはマクロを呼び出びだした時に表示しているシートという意味になりますので、
今回だとSheet1になります。
よってActiveSheet.CheckBoxes.Countを言葉にすると
Sheet1のチェックボックスの数をカウントするという意味になります。
For i = 2 To j
ws.CheckBoxes(i).Value = ws.CheckBoxes(1).Value
Next i
For文を使用しているのでイメージで値の流れを掴んでみましょう!!
イメージ
ws.CheckBoxes(1).Valueの値は2通りあります。
上記のチェックボックス1のFALSEかTRUEを他のチェックボックスに代入しているだけです。
流れを追ってみると
代入されてws.CheckBoxes(2).Value はTRUEになりました!
代入されてws.CheckBoxes(3).Value はTRUEになりました!
以上がFor文の流れになります。
最近のコメント