はじめに

上記のように動きのあるトグルスイッチを作成してみました。通常のコマンドボタンでもボタンの表記を変えれば同じような事ができますが、遊び心を加味してみました。
※もっと良い方法を思いついたので、掲載します。旧記事は残しておきます。
作り方
1.図形の「円」と「角丸の四角」、そして全体を覆うように「四角」を用意します。
「円」が下になるように「角丸の四角」を重ね、最後に「四角」を配置します。
「四角」以下のように「円」た中心となるように全体を覆います。そして「塗りつぶしなし」「枠線なし」として透明の図形にしておきます。
最後に3つの図形を選択してグループ化しておきます。

2.グループ化した図形をボタンとして使うため、プロシージャを用意します。
Sub testToggleSwitch()
With ActiveSheet.Shapes("グループ化 29")
.Flip msoFlipHorizontal '水平方向反転
'どちらを指しているかは反転しているかで判断できる。
If .HorizontalFlip Then
Debug.Print "L"
Else
Debug.Print "R"
End If
End With
End Sub
プログラムでは、「グループ化 29」が先程作った図形の名前になります。図形を選択して、Excel画面左上の名前ボックスで図形の名前を確認できます。
お使いの環境に合わせて図形の名前は変更してください。
この方法では、グループ化した図形を水平方向に反転させてスイッチを切り替えたように見せます。
最後の透明な「四角」が反転しますので、「円」が中心となるように配置しましょう。
スイッチが左右どちらを指しているかは、シェイプの .HorizontalFlip プロパティで確認できます。
元になったスイッチが左向きなので、FALSE(反転していない)なら左向きという事になります。
上下のスイッチを作りたい時
今回は左右のトグルスイッチでしたが、上下方向のスイッチも作ることができます。
スイッチの図形を縦方向に作成して、上下の反転である .Flip msoFlipVertical とします。
判定は、.VerticalFlip で確認するようにします。
作り方(旧記事)
1.図形の「円」と「角丸の四角」を用意して、円が下になるように四角と重ね、2つの図形を選択してグループ化しておきます。

2.グループ化した図形をボタンとして使うため、プロシージャを用意します。
Sub togleSW1()
Dim offset As Long
offset = 28
With ActiveSheet.Shapes("Group 12")
If .Rotation <> 0 Then
.Rotation = 0
.Left = .Left - offset
Else
.Rotation = 180
.Left = .Left + offset
End If
End With
End Sub
プログラムでは、「Group 12」が先程作った図形の名前になります。お使いの環境に合わせて図形の名前は変更してください。
トグルスイッチの動きは、180度向きを変えて、円の部分に合わせて横移動させる必要があります。

左への移動量に関しては、offset という変数で調整します。図形の大きさにより移動量は調整が必要になります。
円の部分が動いていないように見える移動量を適当に調整してみてください。
3.グループ化した図形をボタンとして使うために、右クリックし「マクロの登録」を選択して、上記のプロシージャを指定します。これで図形をクリックすると、トグルスイッチのノブが左右に動くように動作します。
左右に適当な表記をしておけば、視覚的にどちらを選択しているかわかるでしょう。

動作によるプログラムは、If文で行えば良いでしょう。
応用として、縦のトグルスイッチも作ることができます。この場合は、Left 部分を Top に変更すれば良いでしょう。
二者択一を視覚的に表現できますので、参考にしてみてください。
コメント