• ベストアンサー

日報の休日ボタン(トグルボタン)を一度に解除するマクロは?

今、休日設定の違う従業員が使用する日報にて、 日付部分をクリック(凹ませる)するとその列の色が変わり、 再度クリック(凸らせる)して戻す、トグルボタンを E2~AI2まで設置しています。 そのボタンを別のボタンで一括して 戻す(凸らせる)事は出来ないでしょうか? 今、トグルボタンに下記の式を入れています。                 ↓それぞれ1~31までのButton番号 Private Sub ToggleButton1_Click() If ToggleButton1.Value Then Range("E2").Value = 1     ←それぞれE2からAI2までを表記 Else Range("E2").Value = ""     ←同様にE2からAI2まで End If End Sub 上記のボタン番号、セル番号を変えて31個分の式をそれぞれの ボタンに貼り付けています。

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.4

これでいかがでしょうか? Private Sub CommandButton1_Click()   Dim i As Integer   For i = 1 To 31     OLEObjects("ToggleButton" & i).Object.Value = False   Next End Sub

guchi_yama
質問者

お礼

上記式でうまく行きました。ありがとうございました。 また、何かありましたら宜しくお願い致します。

その他の回答 (3)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

>そして一番上の行が黄色くなります。 って、「Private Sub CommandButton1_Click()」でしょうか? 単にボタンのイベントに先のコードを記入しただけですよね?

guchi_yama
質問者

お礼

単にコードをコピペしただけです; それだけでは駄目だったのですね;; すいませんでした。 これに懲りずに また、何かありましたら宜しくお願い致します。

  • normo
  • ベストアンサー率54% (6/11)
回答No.2

Range("E2:AI2").ClearContents でE2~AI2までクリアされます。

guchi_yama
質問者

お礼

ありがとうございます。 一応消えるのですが、トグルボタンは上がらない(凸)のですね; しかし、参考になりました。ありがとうございます。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

下記で可能でしょう。 For i = 1 To 31 Controls("ToggleButton" & i).Value = False Next Range("E2:AI2").ClearContents

guchi_yama
質問者

お礼

上記式を使って 下記のような式を入れたのですが、 subまたはFunctionが定義されていません と出ます。 そして一番上の行が黄色くなります。 何がおかしいのでしょうか? Private Sub CommandButton1_Click() For i = 1 To 31 Controls("ToggleButton" & i).Value = False Next Range("E2:AI2").ClearContents End Sub

関連するQ&A

  • Excel トグルボタンについて教えて下さい

    今朝、コマンドボタンについて質問をして、 ボタンを押すごとに、特定のセルに1とブランク(=0)を 交互に入力する方法を教えてもらったのですが、その中で 新しい、トグルボタンという機能を教えてもらい、 本などを見て自分なりにやってみたのですが、 回答が見つからず、またまた書き込んでしまいました;; 先ほどは、ABS()の絶対値を使って、0と1を繰り返す方法と 下記のプログラムを教えて頂いたのですが、 Private Sub CommandButton1_Click() If Range("D1").Value <> "" Then   Range("D1").Value = "" Else    Range("D1").Value = 1 End If End Sub 作りたい書類には1を入力したときに凹ませたいのですが、 教えてもらった回答では どうしても、0の時に凹んで 1のときに凸るんです。 内容を色々変えてやってみたものの成功には至らず、 本を見ても回答に見合った例がなく、うまく出来ません。 っというか、コマンドボタンと同様の式では、 凹んだときにTrueを返して、凸ったときにFalseを返すという 折角のトグルボタンの意味が無いですよね? とどのつまりが、お知恵をお貸し頂きたいということで、 毎度ながら申し訳ないのですが 何卒宜しくお願いします。

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

    いつもお世話になっております。 エクセル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 ---

  • トグルボタンの文字色

    windows-xp、アクセス2003、を使っています。 フォームに複数のトグルボタンを置き、下記コードをつけました。 そこで質問です。 「トグルボタンがONの時は赤色、OFFの時は黒色にする。」ということをしたいです。 できましたら、下記コードに書き加えて頂けませんでしょうか。 Private Sub CH01_Click() If CH01 = -1 Then CH02 = 0 CH03 = 0 End If End Sub Private Sub CH02_Click() If CH02 = -1 Then CH01 = 0 CH03 = 0 End If End Sub Private Sub CH03_Click() If CH03 = -1 Then CH01 = 0 CH02 = 0 End If End Sub すみませんが、宜しくお願い致します!!

  • Access:トグルボタンのフォントカラー変更について

    Option Compare Database Private Sub トグル1_BeforeUpdate(Cancel As Integer) If トグル1 = -1 Then Me.トグル1.ForeColor = 10855845 Else     Me.トグル1.ForeColor = 0 End If End Sub Access2007を使用しています。 トグルボタンをクリックした場合、ボタンのフォントカラーを変えたく、上記のようにプログラムを組みました。 結果は動きました。 しかし、ボタンが一つだけなら良いのですが、複数ある場合、すべてのボタンに同じプログラムを設定しないと動きません。同じようなプログラムを複数組むのは無駄な気がしたので、以下のようなプログラムを作ってみました。 Option Compare Database Dim Text As String Private Sub トグル1_BeforeUpdate(Cancel As Integer) Text="トグル1" Call Test End Sub Sub Test() If Me.ActiveControl = -1 Then Me.Text.ForeColor = 10855845 Else Me.Text.ForeColor = 0 End If End sub 結果は動きませんでした。どうやら Me.Text.ForeColor = Me.トグル1.ForeColor と読んで欲しいところを Me.Text.ForeColor ="Me.Text.ForeColor" と読んでいるようです。 やはり、一つ一つに先頭のに記載したプログラムを入れていくしかないのでしょうか? ご教授の程、おねがいします。

  • エクセルVBAマクロのオプションボタンについて

    オプションボタンのマクロに関して教えて下さい。 マクロのスキルレベルは、新しいマクロの記録を多用して、マクロを組むレベルです。 「表示-ツールバー-フォーム」から選ぶオプションボタンを使って、オプションボタンAが押されている場合とBが押されている場合で、処理を変えたいのですが、そのオプションボタンの値をどうやっても拾えません。 色々検索した結果、以下のマクロでできる気がしたのですが、駄目でした。 Private Sub OptionButton1_Click() オプション1 = True End Sub Private Sub OptionButton2_Click() オプション2 = True End Sub Sub オプションボタン() If オプション1 = True Then Range("a1") = 1 ElseIf オプション2 = True Then Range("a1") = 2 Else Range("a1") = 0 End If End Sub 作ったオプションボタンを右クリックしてマクロ登録を選ぶと、「オプション1_Click」となっているので、「OptionButton1_Click」を「オプション1_Click」に変えてみたのですが、やっぱり駄目でした。 ネットではユーザフォームを使ったマクロ例はあるのですが、そのまま使用するオプションボタンの例がありません。できればユーザフォームは使いたくありません。 ご存知の方がいらっしゃいましたら、教えて下さい。よろしくお願いします。

  • 別シートのトグルボタンを指定したい

    複数シートがあって、それぞれのシートにトグルボタンがあるとします。 トグルボタンを押したときの動作は同じなので、 標準モジュールとかに動作内容を記述したいのですが、 「If ActiveSheet.ToggleButton1 = False Then」とか記述しても エラーが出ます。 アクティブなシートにあるトグルボタン1が押された時の動作内容を書きたいです。

  • マクロボタンが勝手に飛び回る

    エクセルシートの「フォームツールバー」でフォームボタンを配置して印刷マクロを作ったのですが、なぜかボタンをクリックすると勝手に移動してしまいます 原因がサッパリわかりません、 プロシージャは Private Sub CommandButton1_Click() Worksheets("納付書").Range("a1:v35").PrintOut Range("Z4").Select End Sub このようなマクロになっています。 助けてください。

  • マクロボタンのリセットについて

    いつも大変お世話になっております。 以前こちらで、、、、https://okwave.jp/qa/q9846043.html を質問し、コードを教えていただき、シートにマクロが組まれた状態です。 今回はそのシートにマクロが組まれた状態で、マクロボタンを作成しそのボタンに、数字は守りつつ背景のカラーをリセットしたいボタンを作りコードを教えていただきました。 シートのマクロはうまくいくのですが、マクロボタンはうまくいきません。 私のやり方が間違っているのでしょうか?(『開発』→コントロールの『挿入』→フォームコントロールのボタン→『ボタン1_Click』と登録しました。) コードは以下です。 Sub ボタン1_Click() If Application.Intersect(Selection, Range("D16:CJ48")) Is Nothing _ Or Selection.Count > 1 Then Exit Sub End If Application.EnableEvents = False Selection.Interior.ColorIndex = xlNone Application.EnableEvents = True End Sub 誹謗中傷等ははお断りしています。

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

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

  • ExcelのToggleButtonを排他的に。。

    師も走りまわる12月。。皆様(師)も走りまわっていることでしょう。 私は。。。走りません、はい。 本題です。 ExcelのVBAでToggleButtonを排他的に使いたいのです。 調べるとオプションボタンになさいと書かれてはいるのですが・・・。 ワークシート上にToggleButton1~3があります。 1を押す(凹)と“処理A”,もう一度押す(凸)と“処理Z” 2  同上    “処理B”,  同上 3  同上    “処理C”,  同上 以下のコードでなんとなく動くのですが,排他的動作の際には,TrueなToggleButton#の動作をおこなってしまいます。 Excel2007,Windows7です。 師の皆様の良い御提案が御座いましたら御教示下さい。 ----ボタンがあるシートモジュールに記載---------------------------------------- Option Explicit Dim strCode As Variant Private Sub ToggleButton1_Click() If ToggleButton1.Value = False Then strCode = "処理中Z" ' Debug.Print "AからZに戻します。" Else strCode = "処理中A" ' Debug.Print "Aを押しました。" ToggleButton2.Value = False ToggleButton3.Value = False End If 'Debug.Print "Aでの処理をします。" Call 処理(strCode) 'Debug.Print "Aから処理をしました。" End Sub Private Sub ToggleButton2_Click() If ToggleButton2.Value = False Then strCode = "処理中Z" ' Debug.Print "BからZに戻します。" Else strCode = "処理中B" ' Debug.Print "Bを押しました。" ToggleButton1.Value = False ToggleButton3.Value = False End If 'Debug.Print "Bでの処理をします。" Call 処理(strCode) 'Debug.Print "Bから処理をしました。" End Sub Private Sub ToggleButton3_Click() If ToggleButton3.Value = False Then strCode = "処理中Z" Else strCode = "処理中C" ToggleButton1.Value = False ToggleButton2.Value = False End If Call 処理(strCode) End Sub Sub 処理(strCode) Dim i As Long Dim Start As Single Dim Finish As Single Start = timer i = 0 'Application.ScreenUpdating = False Application.Calculation = xlCalculationManual For i = 1 To 1000 i = i + 1 Cells(2, 1).Value = strCode & i Next i Application.Calculation = xlCalculationAutomatic 'Application.ScreenUpdating = True Cells(1, 1).Value = strCode Finish = timer Cells(3, 1).Value = Format$(Int((Finish - Start) * 10 ^ 4 + 0.5) / 10 ^ 4) End Sub --------------------------------------------------------------------------- おまけ:  上記サンプルを作ってみましたが,ToggleButton1だけ相対的に処理速度が速いです・・・。 なぜなんでしょう??

専門家に質問してみよう