こんにちは。
よろしくお願いいたします。
只今、アクセス2007でアンケートの結果を入力するためのフォームを作成しています。
アンケートはすべて選択制になっていますので、トグルボタンで選べるようにしました。また選択したものとしていないもの違いをわかりやすくするために、選択したものは、ボタンの文字が黒から赤に変わるようにしました。
アンケートを最後まで入力し終わったら、コマンドボタン【次を入力】を押すと、新しいレコードへ移動するようにしました。
しかし、トグルボタンの選択がクリアされず、ひとつ前のレコードの選択結果がそのままです。
新規レコードに移動した時に、前レコードの選択結果をクリアにするためにはコマンドボタンにどのような設定をすればいいのでしょうか?
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
フレームとは、オプショングループのこととなりますか。
Private Sub コマンドボタン_Click()
Dim ctl As Control
Dim subCtl As Control
For Each ctl In Me.Controls
If (ctl.ControlType = acOptionGroup) Then
For Each subCtl In ctl.Controls
If (subCtl.ControlType = acToggleButton) Then
If (ctl.Value = subCtl.OptionValue) Then
subCtl.ForeColor = 255
Else
subCtl.ForeColor = 0
End If
End If
Next
End If
Next
End Sub
上記では、コマンドボタンがクリックされた時に色変更します。
自フォーム上のコントロールの中で、オプショングループに対して、
オプショングループを構成しているコントロールの値と、現在のオプショングループの値が同じものを 赤にするものとなります。
後は、これを呼び出すタイミングと、各オプショングループの値をいつ、どのように設定するか考えられたらと思います。
オプショングループ自体が連結されているのなら、既定値を設定しておくとか、
フォームのレコード移動時であれば、更新対象/新規の区別なく上記処理で大丈夫そう。
(既定値の設定は忘れずに)
※従来のクリック時処理はそのままでも、上記 subCtl 部分の処理に書き換えてもよいと思います。
例えば、
Private Sub Form_Current()
Call コマンドボタン_Click
End Sub
Private Sub FrmClick()
Dim subCtl As Control
For Each subCtl In Me.ActiveControl.Controls
If (subCtl.ControlType = acToggleButton) Then
If (Me.ActiveControl.Value = subCtl.OptionValue) Then
subCtl.ForeColor = 255
Else
subCtl.ForeColor = 0
End If
End If
Next
End Sub
Private Sub オプショングループ1_Click()
Call FrmClick
End Sub
Private Sub オプショングループ2_Click()
Call FrmClick
End Sub
Private Sub オプショングループ3_Click()
Call FrmClick
End Sub
・・・・・
※その他、編集をキャンセルした場合とかは考えてみてください。
度々のご回答ありがとうございます!!!
無事にできました!!
感動です!
教えていただいたものを今一度見直して
精進していきます!
本当に助かりました!
ありがとうございました!
No.1
- 回答日時:
回答つかないようですが、もう解決されましたか。
その場合はスルーしてください。
Private Sub トグルボタン_Click()
If (Me.トグルボタン = True) Then
Me.トグルボタン.ForeColor = RGB(255, 0, 0)
Else
Me.トグルボタン.ForeColor = 0
End If
End Sub
とか
Private Sub Form_Current()
If (Me.トグルボタン = True) Then
Me.トグルボタン.ForeColor = RGB(255, 0, 0)
Else
Me.トグルボタン.ForeColor = 0
End If
End Sub
のようになっているのでしょうか
新規レコードが対象なのか Me.NewRecord で判別できるので
Private Sub Form_Current()
If (Me.NewRecord = True) Then
' 新規レコード用処理
Else
' 既存レコード用処理
End If
End Sub
※ 既に各トグルボタン用のものを作っているのなら、
Private Sub Form_Current()
Dim i As Integer
If (Me.NewRecord = True) Then
' 新規レコード用処理(トグル1 ~ トグル8 を False に初期化)
For i = 1 To 8
Me("トグル" & i) = False
Next
End If
Call トグル1_Click
Call トグル2_Click
Call トグル3_Click
Call トグル4_Click
Call トグル5_Click
Call トグル6_Click
Call トグル7_Click
Call トグル8_Click
End Sub
のように、作ってある関数を呼び出してもよいと思います。
この回答への補足
ご回答ありがとうございます!
継続してネットなどで調べてはいるのですが、解決できず、
また、なかなか回答がつかずに困っていました。
当方、初心者なもので、ご回答いただいたプログラムについて
ご質問させていただいてもよろしいでしょうか?
今現在、選択/非選択のトグルボタンの色分けの設定は
以下のように各フレームごとに記述しています。
このようなプログラムだと、30246kikuさんのおっしゃることは
できますでしょうか?
Private Sub フレーム名_Click()
Me!トグルボタン1.ForeColor = -255 * (Me.ActiveControl = 1)
Me!トグルボタン2.ForeColor = -255 * (Me.ActiveControl = 2)
End Sub
それとも、30246kikuさんがおっしゃるように
それぞれのボタンに以下のようなプログラムを書くべきでしょうか?
Private Sub トグルボタン_Click()
If (Me.トグルボタン = True) Then
Me.トグルボタン.ForeColor = RGB(255, 0, 0)
Else
Me.トグルボタン.ForeColor = 0
End If
End Sub
なにぶんトグルボタンが100個、フレーム数は26個あるので・・・
でも上記のようなIF文でないとダメならば書き直します!
質問がちんぷんかんぷんでしたら申し訳ありません。
ご回答お待ちしております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Excel(エクセル) マクロを教えてください 3 2023/07/31 21:57
- Excel(エクセル) マクロを教えてください 2 2023/07/30 23:05
- JavaScript jsで診断コンテンツのページ内切り替えについて 1 2023/04/14 17:31
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Excel(エクセル) エクセルでシート保護のかかり方の違いとセルの非保護の設定 3 2022/08/09 10:02
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- iPhone(アイフォーン) アイフォン不便なので何とかしたい 3 2023/01/21 19:33
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
日報の休日ボタン(トグルボタン)を一度に解除するマクロは?
Excel(エクセル)
-
フォームからのレコード削除について
その他(データベース)
-
コンボボックスで選択したものをクリアーしたい(アクセス VBA)
Access(アクセス)
-
-
4
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
5
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
6
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
7
レコードを保存するコード アクセスvba
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS 複数のフォームから同一...
-
アクションクエリ DoCmd.RunSQ...
-
Accessレコードの削除(VBA)
-
Accessでレコードの複製
-
アクセスのフォーム
-
アクセスで複数レコードを1レ...
-
ACCESSフォーム入力後の確定
-
Accessのレコード数をテキスト...
-
AccessのRefresh・Requery・Rep...
-
アクセスのフォームで
-
Accessの「Form_AfterUpd...
-
アクセスのコンボボックスの内...
-
ファイルメーカーProでレコード...
-
ファイルメーカーで一部のレコ...
-
MS.Access でサブフォーム付の...
-
access の 最終レコードの判定...
-
access2010 特定文字を含むレコ...
-
Access 指定したレコードへ移動
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS 複数のフォームから同一...
-
AccessのRefresh・Requery・Rep...
-
Accessで経過日付に応じて色を...
-
ACCESSフォーム入力後の確定
-
accessでオートナンバーを使わ...
-
Accessでレコードの複製
-
Accessフォームで詳細内の任意...
-
access の 最終レコードの判定...
-
MS.Access でサブフォーム付の...
-
アクセエスのレコードの更新をV...
-
Accessの「Form_AfterUpd...
-
MSAccess ロック状態かどうかを...
-
DoCmd.SearchForRecord が動か...
-
アクセスで複数レコードを1レ...
-
アクションクエリ DoCmd.RunSQ...
-
禁止文字をエクセルかアクセス...
-
access2010 特定文字を含むレコ...
-
ACCESS 単票形式フォームの新...
-
Accessのレコード数をテキスト...
-
Accessレコードの削除(VBA)
おすすめ情報