複数のチェックボックスを一括で選択できる方法を考えてみました!
今回はActiveXコントロールのチェックボックスを使用する。
フォームコントロールのチェックボックスは同サイト「チェックボックスを一括選択」を参照
以下手順
1. チェックボックス選択
「開発」→「挿入」→「チェックボックス(Active コントロール)」
2. 任意のシートにチェックボックス配置(今回はSheet1)
3. セットしたチェックボックスをダブルクリックしてソースコードを表示
※ダブルクリックで表示されない場合はデザインモードであるか確認
以下ソース
Private Sub CheckBox1_Click()
Dim i As Variant
Dim bln As Boolean
Dim nums As Variant
nums = Array(1, 2, 3)
bln = CheckBox1.Value
For Each i In nums
OLEObjects(“CheckBox” & i).Object.Value = bln
Next i
End Sub
ソース解説
Dim nums As Variant
nums = Array(1, 2, 3)
Array()は簡単にいうとVariant型の変数に入れる配列です。
Variant型はどんな型の値を入れてもOKな型です。
例
nums = Array(1,2,3)
nums = Array(“あ”,”い”,”う”,”え”)
ちなみに値の取り出し方は
インデックス(添え字)を番号指定します!
今回の例でいうと下記のイメージ
★インデックスは0から始まることに注意する。
bln = CheckBox1.Value
変数blnはBoolean型なのでTRUEかFALSEが入ります。
イメージ
OLEObjects(“CheckBox” & i).Object.Value = bln
言葉にすると、
OLEobjectsコレクションのコントロール名がチェックボックスiを対象とする値
といった感じです。
この形は決まり事と考えてください。
プロパティ解説
シート上にある複数のチェックボックスの対象を動的に変更する場合は
上記のようにOLEObjectsコレクションを使用してコントロール名を指定します。
For Each i In nums
Next i
最後にFor文を使用しているのでイメージで値の流れを掴んでみましょう!!
解説は以上です。
お役に立てれば幸いです。