- ベストアンサー
トグルボタンをオプションボタンのように使いたい
エクセルでマクロを作成しています。 見栄えを良くしようと手を入れているところです。 そこで今までオプションボタンで選択していた項目を トグルボタンでできないものかと考えています。 ボタンに画像が貼れる点が気に入っています。 1つのボタンを押してTrueにしたら他のボタンがFalse になるようにしたいのですが上手く行きません。 各ボタンのコードに他のボタンをFalseにするように書くと私にはわからない理由で全てのボタンがFalseになってしまいます。 良い方法をお教えください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ToggleButton1 のクリックで、ToggleButton2 の Value を操作した時点で、ToggleButton2 の Change や Click が呼ばれちゃいます。 シートに ToggleButton が 2つだけなら下記でそれらしく動作しました。 '*********************************************** Private Sub ToggleButton1_Click() ToggleButton2.Value = Not ToggleButton1.Value End Sub '*********************************************** Private Sub ToggleButton2_Click() ToggleButton1.Value = Not ToggleButton2.Value End Sub '*********************************************** シートに ToggleButton が 3つ以上ある場合は工夫が必要で、一応下記でそれらしく動作しました。 '*********************************************** Private Sub ToggleButton1_Click() If Application.EnableEvents Then myToggle 1 End Sub '*********************************************** Private Sub ToggleButton2_Click() If Application.EnableEvents Then myToggle 2 End Sub '*********************************************** Private Sub ToggleButton3_Click() If Application.EnableEvents Then myToggle 3 End Sub '*********************************************** Sub myToggle(cnt As Integer) Dim ob As OLEObject On Error Resume Next Application.EnableEvents = False For Each ob In Me.OLEObjects If ob.ProgId = "Forms.ToggleButton.1" Then If ob.Name = "ToggleButton" & cnt Then ob.Object.Value = True Else ob.Object.Value = False End If End If Next ob Application.EnableEvents = True End Sub '***********************************************
お礼
素晴らしいご回答ありがとうございます。 おかげさまで思うような動作のボタンになりました。 3つ以上の方のコードは読み解くことが出来ず丸写しになってしまいました。 理解を目指して勉強して行きたいと思います。