「画像のトグルスイッチ」では、けっこう無理をして、オリジナル画像のスイッチを配置しました。これは、スイッチそのものを動的に配置しようとしたからです。
画像を使って、最初から固定されたスイッチをということであれば、ずっと簡単にできます。
以上、おわり。現在のスイッチの状態は、ToggleValue(グループ番号) で取得できます。
標準モジュール ToggleSW(), ToggleValue()
'----- スイッチ名の接頭語
Private Const HeadElement = "Toggle"
'----- すべてのスイッチに登録するマクロ
Public Sub ToggleSW()
Dim swName, elements, onOff, groupNumber, oppStr, riseButtonName
swName = Application.Caller
elements = Split(swName, "-")
If elements(0) <> HeadElement Then Exit Sub
groupNumber = Val(elements(1))
onOff = (elements(2) = "ON")
With ActiveSheet
.Shapes(getSwName(groupNumber, onOff)).Visible = False
.Shapes(getSwName(groupNumber, Not onOff)).Visible = True
End With
Application.ScreenUpdating = True
'次は動作確認用の MsgBox
MsgBox groupNumber & " is " & ToggleValue(groupNumber)
End Sub
'----- スイッチ名を編成
Private Property Get getSwName(groupNumber, onOff)
Dim onOffStr
onOffStr = "OFF": If onOff Then onOffStr = "ON"
getSwName = _
HeadElement & "-" & Format(groupNumber, "00") & "-" & onOffStr
End Property
'----- 現在のスイッチの状態を取得
Public Property Get ToggleValue(groupNumber) As Boolean
ToggleValue = _
(ActiveSheet.Shapes(getSwName(groupNumber, True)).Visible)
End Property