|
フォームツールバーのコントロールの長所は、コレクションオブジェクトを使う
によって簡単に配列のように扱えることです。即ち、同種のコントロールを
シートに配置した順に 1,2,3・・とIndexがつきます。これを利用して名前が
分からなくても特定のコントロールを操作できるわけです。また、Callerプロパティ
によって"現在操作しているコントロールの名前"が取得できますから、例えば
Sub MyCheckBox()
Dim x As Variant
Dim Msg As String
x = Application.Caller
If VarType(x) <> 8 Then Exit Sub
Select Case ActiveSheet.CheckBoxes(x).Value
Case xlOn: Msg = "オン"
Case xlOff: Msg = "オフ"
End Select
MsgBox x & " のチェックは" & Msg & "になります"
End Sub
というようなマクロを登録すれば、登録した全てのチェックボックスの
チェックの変化をメッセージできます。20個も配置するなら、このような
マクロ一つで"どれがチェックされたか"を判定して処理を分岐できるので、
コーディングを大いに省力化できるはずです。上のコードで x に入る値は、
予め数式バーを開いておき、Ctrlキーを押しながら任意のコントロールを
選択したとき、数式バーの左端の窓に表示される名前になりますから、
それをメモしておいて Select Case で分岐・判定するコードを書くのです。
なお、コレクションオブジェクトのメソッドには、一括削除するDeleteや
マクロを一括登録するOnActionがあるので、手作業でする手間を省くことも
できます。
|
|