トグルボタンの文字色を設定する方法

このQ&Aのポイント
  • Windows XPとAccess 2003を使用している場合、複数のトグルボタンを配置し、トグルボタンがONの場合には赤色、OFFの場合には黒色にする方法を知りたいです。
  • 提供されたコードに記述することで、トグルボタンが切り替わるたびに他のトグルボタンがOFFになるように設定されています。
  • お手数ですが、提供されたコードに以下の部分を追加してください: Private Sub CH01_Click() If CH01 = -1 Then CH01.ForeColor = vbRed CH02.ForeColor = vbBlack CH03.ForeColor = vbBlack End If End Sub Private Sub CH02_Click() If CH02 = -1 Then CH01.ForeColor = vbBlack CH02.ForeColor = vbRed CH03.ForeColor = vbBlack End If End Sub Private Sub CH03_Click() If CH03 = -1 Then CH01.ForeColor = vbBlack CH02.ForeColor = vbBlack CH03.ForeColor = vbRed End If End Sub
回答を見る
  • ベストアンサー

トグルボタンの文字色

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 すみませんが、宜しくお願い致します!!

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

  • ベストアンサー
  • sckt
  • ベストアンサー率42% (3/7)
回答No.1

動作確認したのはトグルボタンひとつだけでしたが、 たぶんこれで大丈夫かと思います。 とりあえずトグルボタン「CH01」をクリックしたときの動きだけ。 (あとはコピペして、ボタンの名前を変えれば大丈夫です) Private Sub CH01_Click() If CH01.value = -1 Then 'CH01の文字を赤(255)にする CH01.ForeColor = 255 'CH01以外のトグルボタンをOFFにする CH02.value = 0 CH03.value = 0 'CH01以外のトグルボタンの文字を黒(0)にする CH02.ForeColor = 0 CH03.ForeColor = 0 Else 'CH01の文字を黒(0)にする CH01.ForeColor = 0 End If End Sub

mipomipo
質問者

お礼

すみません!!私の知識不足でした。 他のボタンへも、同様のコードを書いたら、希望する動きができました。 なので、解決ですっ!!すみませんでした!!

mipomipo
質問者

補足

ご回答ありがとうございます。 クリックしたら、文字色が赤くなりました!! が、他のボタンをクリックした時、つまり、CH01をOFFにした時の文字色が黒に戻らないのです。 ボタンのON、OFFは、問題ないのですが・・・。 コードも確認したところ、間違ってはいないようでした。 原因がおわかりになるようでしたら、再度ご回答をお願いしたいと思います。 お手数おかけしますm(_ _)m

関連する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を返すという 折角のトグルボタンの意味が無いですよね? とどのつまりが、お知恵をお貸し頂きたいということで、 毎度ながら申し訳ないのですが 何卒宜しくお願いします。

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

    今、休日設定の違う従業員が使用する日報にて、 日付部分をクリック(凹ませる)するとその列の色が変わり、 再度クリック(凸らせる)して戻す、トグルボタンを 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個分の式をそれぞれの ボタンに貼り付けています。

  • 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" と読んでいるようです。 やはり、一つ一つに先頭のに記載したプログラムを入れていくしかないのでしょうか? ご教授の程、おねがいします。

  • コードの応用編を教えてください!

    windows-xp、アクセス2003、を使っています。 チェックボックスの下記コードの応用編を教えてください。 フォームを開き、チェックボックスを置きました。そして名前を、正従業員は「CH01」バイトは「CH02」としたとします。 Private Sub CH01_Click() If CH01 = -1 Then CH02 = 0 'CH01がクリックされたとき、CH01にチェックが入っていればCH02のチェックを消す End Sub Private Sub CH02_Click() If CH02 = -1 Then CH01 = 0 'CH02がクリックされたとき、CH02にチェックが入っていればCH01のチェックを消す End Sub という記述をすると、片方チェックがされ、片方が消えます。ここまではわかったのですが・・・ 次に、パート「CH03」を加えて3択にした場合は、どのようなコードを書けばよいでしょうか? もちろん、どれか1つ選択すると、残りの2つが消えるという動きにしたいです。 どなたかわかる方、お教えください。 宜しくお願い致します。

  • フォームのボタンからのみexcelを終了したい

    おねがいします。 都合上、フォームのボタンからだけexcelを終了したのです。 Private Sub CommandButton1_Click() Application.DisplayAlerts=False Application.Quit End Sub それに伴い、 右上のexcelのxボタン、シートのxボタンを無効化または非表示にしたいです。 Private Sub Workbook_BeforeClose(Cancel As Boolean)      If CloseMode = 0 Then     Cancel = 1   End If End Sub これで、エクセルxボタンは無効になりましたが、 フォームからの終了も出来なくなってしまいました。 フォームからのみ終了する方法を教えてください。

  • 複数のユーザーフォームをコマンドボタンにて表示・非表示させるには

    VBA勉強中のものです。 複数のユーザーフォームをコマンドボタンを使用して画面への表示切替を考えております。 例)ユーザーフォーム1,ユーザーフォーム2,ユーザーフォーム3のそれぞれにコマンドボタン1,コマンドボタン2,コマンドボタン3を作成し、   コマンドボタン1→ユーザーフォーム1を表示   コマンドボタン2→ユーザーフォーム2を表示   コマンドボタン3→ユーザーフォーム3を表示 とするようなことを考えおります。  そこで、下記のようにコードを作成したのでですが,一度表示させたユーザーフォームを再度表示させようとコマンドボタンをクリックしたら、「フォームはすでに表示させているのでモーダル表示はできません」とエラーがでてしまいます。   どなたか、どのようにしたらいいかご教授ねがいます。 サンプルコード) --------------------------------------------------- 'UserForm1のコード Private Sub CommandButton2_Click() Call UserForm2_show UserForm1.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm1.Hide End Sub ---------------------------------------------------- 'UserForm2のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm2.Hide End Sub Private Sub CommandButton3_Click() Call UserForm3_show UserForm2.Hide End Sub ------------------------------------------------------- 'UserForm3のコード Private Sub CommandButton1_Click() Call UserForm1_show UserForm3.Hide End Sub Private Sub CommandButton2_Click() Call UserForm2_show UserForm3.Hide End Sub ------------------------------------------------------------ '標準モジュール コード Sub UserForm1_show() UserForm1.Show End Sub Sub UserForm2_show() UserForm2.Show End Sub Sub UserForm3_show() UserForm3.Show End Sub

  • ラジオボタンの使い方

    お世話になります。 Access VBAなのですが、ボタンを押したときに 下記のようなコードでラジオボタンのOn, Offを判定しています。 しかしIf文のところで「指定した式には値が ありません」とエラーがでてしまいます。 原因がわからずに困っています。 おわかりのかた、どうかよろしくお願いいたします。 -------------------------------------------- Private Sub cmd登録_Click() If Form_物件マスタ.rb固定.Value Then Rec![水道オプション] = 0 ElseIf Me.rb変動.Value Then Rec![水道オプション] = 1 End If End Sub

  • EXCEL VBAのユーザーフォームに引数を渡す方法について

    すいません、EXCEL VBAのユーザーフォームに引数を渡す方法についてご質問があります。 シート上にコマンドボタンを2つ用意する。 コマンドボタン1を押すと変数mは1 コマンドボタン2を押すと変数mは2 としてユーザーフォームを呼び出す。 Public m As Integer Private Sub CommandButton1_Click()  m = 1  Call フォーム呼び出し(m) End Sub Private Sub CommandButton2_Click()  m = 2  Call フォーム呼び出し(m) End Sub Sub フォーム呼び出し(m As Integer)  UserForm1.Show End Sub 次にユーザフォームにコマンドボタンを1個置き、 ボタンを押したとき、mが1であれば「ボタン1」 mが2であれば「ボタン2」 とメッセージボックスを出し、ユーザーフォームを閉じる。 Private Sub CommandButton1_Click()   If m = 1 Then    MsgBox "ボタン2"   ElseIf m = 2 Then    MsgBox "ボタン2"   End If  Unload UserForm1 End Sub プロシージャ間の引数渡しは色々なテキストに載っているのですが ユーザーフォームに引数を渡す方法はどうも見つからず、 Private Sub CommandButton1_Click(m) としても、コンパイルエラーとなってしまいます。 よろしくご教示をお願いいたします。

  • エクセルVBAでフォームのボタンとコントロールツールボックスのコマンドボタン

    エクセルVBAでフォームのボタンとコントロールツールボックスのコマンドボタンについて教えてください。 実はこれまでフォームしか使ったことがないのですが、フォームのボタンですと、下記のように一つのプロシージャを多数のボタンから呼び出し、呼び出したボタンにより異なった指示が出来ます。 Sub test() x = Application.Caller Select Case x Case "ボタン 1" MsgBox 1 Case "ボタン 2" MsgBox 2 Case "ボタン 3" MsgBox 3 Case "ボタン 4" MsgBox 4 End Select End Sub コントロールツールボックスは Private Sub CommandButton1_Click() MsgBox 1 End Sub Private Sub CommandButton2_Click() MsgBox 2 End Sub のようにコマンドボタンごとにひとつずつ書くしかないのでしょうか?

  • アクセス 帳票ビュー・単票ビューをボタンで切り替え

    帳票ビュー・単票ビューをボタンで切り替えたいのですが、どの定数を指定すればいいのかわかりません。 Private Sub 単票ビュー_Click() Call test End Sub Private Sub 帳票ビュー_Click() Call test End Sub Sub test() If ActiveControl.Caption = "帳票ビュー" Then DoCmd.RunCommand acCmdFormView '単票ビューにする ElseIf ActiveControl.Caption = "単票ビュー" Then DoCmd.RunCommand acCmdFormView '帳票ビューにする End If End Sub こんな感じで作ったのですが、「acCmdFormView」ではダメで、単票ビュー、帳票ビューをそれぞれ指定したのですが、コードを教えていただけますか?

専門家に質問してみよう