ちょっと先の未来クイズ第1問

エクセルでマクロを作成しています。
見栄えを良くしようと手を入れているところです。

そこで今までオプションボタンで選択していた項目を
トグルボタンでできないものかと考えています。
ボタンに画像が貼れる点が気に入っています。

1つのボタンを押してTrueにしたら他のボタンがFalse
になるようにしたいのですが上手く行きません。
各ボタンのコードに他のボタンをFalseにするように書くと私にはわからない理由で全てのボタンがFalseになってしまいます。

良い方法をお教えください。

A 回答 (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
'***********************************************
    • good
    • 0
この回答へのお礼

素晴らしいご回答ありがとうございます。
おかげさまで思うような動作のボタンになりました。

3つ以上の方のコードは読み解くことが出来ず丸写しになってしまいました。
理解を目指して勉強して行きたいと思います。

お礼日時:2006/06/18 17:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!