• ベストアンサー

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

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

  • erara
  • お礼率37% (189/500)

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

  • ベストアンサー
  • 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

  • オプションボタンについて

    ※XPにも質問を載せてしまいました。 宜しくお願いします オプションボタンの分別は TRUE or FALSE になっていますが、例えば 有 or 無 みたいに自由に変更できる方法があるのでしょうか? 又、同一シートでは別の選択として使用は出来ないのでしょうか?別セルで作成しても、全部のオプションボタンに反映してしまいます。 お願いします。

  • オプションボタンについて教えて下さい。

    今、Excelでアンケート入力表を作成しておりまして、各項目ごとオプションボタンで選択していく形式をしたいのですが、シート内全てのオプションボタンが反応してしまいます。どうしたら各項目ごとの反応に出来るのでしょうか?

  • 【Excel】オプションボタンで選択したら〇で囲む

    ご教授ください。 エクセルにてオプションボタンで選択したら選択した項目に〇をつけたいです。 例 〇男 〇女 〇その他 (↑このオプションボタンをどれか選択) ――――――――― 男 ←丸で囲われる) 女 その他 集計ではなく〇で囲われた方を印刷して使用したいです。 マクロを使用するのかルールで表示させる事が可能なのかどのようなやり方がスムーズなのかたどり着けません。 よろしくお願いいたします

  • Access トグルボタンが凹みません

    Accessでトグルボタンの操作方法について教えてください。 オプショングループの中に4つのトグルボタンを置いて、 オプションボタンのように使用したいと思っています。 (押下したボタンが凹み、他の3つのボタンは凸状態にする) 画面表示時、オプション値が1のボタンが凹んだ状態で表示されて いるのですが、他のボタンを押しても押下状態になりません。 (コマンドボタンのように、マウスをはなすと戻ってしまいます) 押下時に凹状態にするには、設定が必要なのでしょうか? 原因がわからなくて困っています。

  • トグルボタンの排他制御でご教授ください。

    いつもお世話になっております。 エクセル2003のマクロVBAで、トグルボタンの排他制御を行っております。 ひとつのフレーム上の二つのトグルボタンの制御は、MSのサンプルソースを参考に以下のようなソースを作成して、制御できております。 教えて頂きたい内容は、同じようにひとつのフレーム上に、二つのトグルボタンを追加して、排他制御を行いたいたく検討しています、できれば、以下の ExclusiveToggleButtons() を使いたいと思っていますが、for ループのフレーム名が固定です。 フレーム名を可変にすれば、共用できるのではないかと思っていますが、なかなかうまくいきません、よい方法がありましたら、ご教授願います。 --- 標準モジュール ------------ start --- Sub ExclusiveToggleButtons() Dim my_toggle As Control ' Loop through all the ToggleButtons on Frame1. For Each my_toggle In myStartForm.my_MonthChoice_Frame.Controls ' If Name of ToggleButton matches name of ToggleButton ' that was clicked... If my_toggle.Name = my_Clicked_But Then '...select the button. my_toggle.Value = True Else '...otherwise clear the selection of the button. my_toggle.Value = False End If Next --- 標準モジュール ------------ end ---

  • オプションボタン

    宜しくお願いします オプションボタンの分別は TRUE or FALSE になっていますが、例えば 有 or 無 みたいに自由に変更できる方法があるのでしょうか? お願いします。

  • EXCELのオプションボタンの使い方

    EXCELのコントロールツールボックス内でのオプションボタンの使い方について質問があります。 例えば、A,B,Cをどれかひとつだけ選択できるオプションボタンを作成します。 その後、Aを選択したときのみ、アクティブになる(または選択できるようになる)オプションボタンを作成することはできるのでしょうか? オプションボタンに上位、下位を設定したいのです。 なお、上位がオプションボタンでなくてもかまいません。 チェックボックスでAを選択した場合のみ、オプションボタンを選択できるようになるとか・・・。 どなたか教えてください。 よろしくお願いします。

  • VBA のオプションボタンって・・・

    教えて頂きたいのですが、 普通、オプションボタンってユーザーフォーム上に作成すると思いますが、訳があってsheet上に作りたいのです。 コントロールツールボックスで作成した直後はちゃんとマクロが走るのですが、一回セーブしてbookを閉じてからオプションボタンを押そうとするとマクロが走ってくれません。 自分で思うに、オプションボタンが画像として扱われている雰囲気がするのですが、ご存知の方がいらっしゃったら教えてください。よろしくお願い致します。

  • Excel VBA トグルボタンのコントロール

    お世話になります。 現在、ユーザーフォームにて管理アプリもどきを作成しているのですが、 以下の様な動作を行うことが可能かどうか、 また可能であればどのような方法があるのかをご教授ください。 ////////////////////////////////////////////////////////// フォーム上に、トグルボタンを複数個配置します。 例として、下図をトグルボタンを5つ配置したものと仮定します。 Valueプロパティは全てFalseを初期値とします。  □□□□□ 左から2つ目のトグルボタン上でマウスクリックし、 そのままクリックを押し込んだままの状態にします。 この時点で、2つ目のボタンのValueプロパティをTrueに変更します。  □■□□□    ↑クリック(押し込んだまま) クリックを押し込んだまま、マウスを右に移動させます。 左から3つ目、4つ目のボタン上にカーソルがきた時点で 3つ目、4つ目のValueプロパティをTrueに変更します。  □■■■□       ↑クリック(押し込んだまま) 左から4つ目のトグルボタン上でクリックを離します。 クリックされていない状態でマウスカーソルが上に乗っても Valueの変更は行われません。 ////////////////////////////////////////////////////////// MouseMoveを試してみましたが、ドラッグ中は処理が発生しないようなので どうしたものか困ってしまいました。 ご助力、よろしくお願い致します。

  • Excel VBAで「こういう状態の時にトグルボタン押下」は?

    Excelで、シートの保護をするためのトグルボタンをつけています。 (押してある時は保護) よく考えたら、ツールバーから保護された時にも ボタンが押下状態にならないと使いづらいのではないかと思い、 If ActiveSheet.protect Then ボタン名 = True End If If ActiveSheet.Unprotect Then ボタン名 = False End If とやってみたんですが、うまく機能しません。 どうしたら良いのでしょうか?

専門家に質問してみよう