• ベストアンサー

トグルボタンをオプションボタンのように使いたい

エクセルでマクロを作成しています。 見栄えを良くしようと手を入れているところです。 そこで今までオプションボタンで選択していた項目を トグルボタンでできないものかと考えています。 ボタンに画像が貼れる点が気に入っています。 1つのボタンを押してTrueにしたら他のボタンがFalse になるようにしたいのですが上手く行きません。 各ボタンのコードに他のボタンをFalseにするように書くと私にはわからない理由で全てのボタンがFalseになってしまいます。 良い方法をお教えください。

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.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 '***********************************************

erara
質問者

お礼

素晴らしいご回答ありがとうございます。 おかげさまで思うような動作のボタンになりました。 3つ以上の方のコードは読み解くことが出来ず丸写しになってしまいました。 理解を目指して勉強して行きたいと思います。

関連するQ&A

専門家に質問してみよう