Microsoft Access 掲示板

レポートでコントロールの値によって枠線と文字の色を変えたい

4 コメント
views

いつもお世話になっております。

レポートで「退職者」というコントロールの値が「退職」だった場合に枠線と文字の色を変えたいと考えております。
まずVBAで


If Me.退職者 = "退職" Then
 Me.退職者.BorderColor = RGB(0, 0, 0)
Else
 Me.退職者.BorderColor = RGB(255, 0, 0)
End If

End Sub

としましたが

イベントプロパティに指定した式 フォーマット時でエラーが発生しました。○○がOLEサーバーまたはActiveXコントロールと通信しているときにエラーが発生しました。
マクロ名、ユーザー定義関数名、[イベント プロシージャ]以外の式が指定されています。
関数、イベント、マクロの評価でエラーが発生しました。

といったエラーが出てレポートが開けませんでした。
(コードを消すとレポートは表示されます)

レポートのレコード移動時に同じコードを書いた場合はエラーは出ませんが色は変わりませんでした。

また、マクロビルダーでプロパティの変更を使ってみようかと思ったのですが値にRGB(0,0,0)を入力してもだめで、値に何を入れたら正解かを見つけられずに断念しました。

コントロール「退職者」が「退職」だった時には黒字と黒枠線、それ以外の時は赤字と赤枠線ということがしたいだけなのですがうまくいかずに困っております。

尚、レポート上では今コードは何も書かれていません。

ご教示いただけると幸いです。
どうぞよろしくお願いいたします。

亞紀姐
作成: 2025/05/20 (火) 22:50:26
通報 ...
1

イベントプロシージャのコードは Private Sub の部分から End Subまですべてコピーして貼り付けてください。

2
亞紀姐 2025/05/20 (火) 23:38:50 fee7e@6d185

失礼いたしました。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

If Me.退職者 = "退職" Then
 Me.退職者.BorderColor = RGB(0, 0, 0)
Else
 Me.退職者.BorderColor = RGB(255, 0, 0)
End If

End Sub

がエラーが出たコードで、

Private Sub Report_Current()

If Me.退 = True Then
 Me.退職者.BorderColor = RGB(0, 0, 0)
Else
 Me.退職者.BorderColor = RGB(255, 0, 0)
End If

End Sub

が何も色が変わらなかったコードです。

よろしくお願いいたします。

3

「退職者」というのは詳細セクションにあるテキストボックスの名前で間違いないですか。
だとしたらコード自体には問題はないです。

ちなみに、レポートのレコード移動時イベント(Report_Current)は印刷プレビューでは発生しないのでそれで色が変わらないのは正常です。

エラーメッセージから推測するに、そのレポートが破損している可能性が高いと思います。
まずは「修復と最適化」を実行してみてそれでも改善しないなら、そのレポートを一から作り直してみてください。

4
亞紀姐 2025/05/21 (水) 16:11:38 fee7e@b548d

ありがとうございます。

>「退職者」というのは詳細セクションにあるテキストボックスの名前で間違いないですか。
はい。間違いありません。
コードに問題がないことがわかって一つは安心しました。

>ちなみに、レポートのレコード移動時イベント(Report_Current)は印刷プレビューでは発生しないのでそれで色が変わらないのは正常です。
こちらも納得しました。ありがとうございます。

>エラーメッセージから推測するに、そのレポートが破損している可能性が高いと思います。
>まずは「修復と最適化」を実行してみてそれでも改善しないなら、そのレポートを一から作り直してみてください。
コントロールの名前に禁止文字はなかったのですが、ラベルの名前に空白が使われており、どうやらそのせいでエラーが起きていたようでした。
https://oshiete.goo.ne.jp/qa/3594497.html
レポートを作り直して一つ一つ項目を増やしながらエラーが出るタイミングを確認して判明しました。

ラベルの名前を見直して無事に作動しました。

本当にお騒がせしました。
ありがとうございました。