- ベストアンサー
Access 97 VBAについて
Access VBAについて教えてください。 初心者ですが、レポートに表示されるテキストボックスの”項目名”と”内容”プロパティーに重複データ非表示にしています。そして、非表示となった部分に”〃”を表示するため別のテキストボックス、”隠しオブジェクト1”及び”隠しオブジェクト2”を配置しています。???にどんな記述が必要かわかりません。”項目名”だけであれば問題なく表示されるのですが”内容”についても同様に処理したいのです。 どうぞ宜しくお願いいたします。 Option Compare Database Option Explicit '値を保持するために外側に変数を定義します。 Dim varA As Variant --------------------------------------------------- Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) If Me.項目名 = varA Then Me.隠しオブジェクト1.Visible = True Else Me.隠しオブジェクト1.Visible = False End If varA = Me.項目名 ???? If Me.内容 = varA Then Me.隠しオブジェクト2.Visible = True Else Me.隠しオブジェクト2.Visible = False End If varA = Me.内容 End Sub
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBAもなにも要りません ="〃" としたテキストボックスの上に重複データ非表示としたテキストボックスを重ねておくだけでOKです
その他の回答 (3)
補足:Me.項目名_ダミーは、ラベルを使っています。
背景色を利用して見せる・見せないを演出したのが罫線が隠れた不具合の原因。 そこで、ダミーの文字色を白と黒とにすることで同じことを実現する手法に変更。 注意すべきは、ページが変わった時に重複非表示がキャンセルされること。 Private Sub Report_Page()は、そのためです。 もちろん、Me.項目名_ダミーは背後にないと白色表示がウッスラと確認されることに。 Option Compare Database Option Explicit Dim 項目名_Now As String Private Sub Report_Page() Static Page_Now As Integer Dim Page_New As Integer Page_New = Me.Page If Page_Now <> Page_New Then Me.項目名_ダミー.ForeColor = RGB(255, 255, 255) 項目名_Now = Me.項目名 End If End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) Dim 項目名_New As String 項目名_New = Me.項目名 If 項目名_New = 項目名_Now Then Me.項目名_ダミー.ForeColor = RGB(0, 0, 0) Else 項目名_Now = 項目名_New Me.項目名_ダミー.ForeColor = RGB(255, 255, 255) End If End Sub 一応、こんな感じで目的が達成されます。
お礼
何度もありがとうございます。 色々試しましたが、何度試してもエラーです。レポートの詳細に書こうとしましたが違うようです。私のレベルが未熟であることを思い知らされました。めげずにもう少しジックリ勉強してみようと思います。 お休みのところ有難うございました。
ちょっと、考え過ぎですね。 <Tbale1> ID____項目名 1_____AAA 2_____AAA 3_____BBB 4_____CCC <Report!Table1> ID____項目名 1_____AAA 2_____〃 3_____BBB 4_____CCC と表示されるようにしたいということ。 1、項目名を、背景色を透明でなく普通色で配置します。 2、その項目名の背景に'〃'を配置しておきます。 こうしておけば、重複していなければ、項目名で'〃'は隠されて事実上項目名のみ。 こうしておけば、重複していれば、項目名が非表示になって裏に隠れていた'〃'が表に。 これでOKです。
お礼
早速回答いただき有難うございます。提案いただいた通り実施してみました。確かに私の目的は達成できました。しかし、罫線の表示に別のVBAを作成しており結果として、”〃”の箇所に罫線が見えなくなってしまいます。 言葉足らずで申し訳ありません。 すべて記載すると以下の内容になっています。ただ、このままですと ”〃”は表示されないままです。 この構文を生かした形でアドバイスをいただければ幸いです。申し訳ありません。どうか宜しくお願いいたします。 --------------------------------------------------- Option Compare Database Option Explicit '値を保持するために外側に変数を定義します。 Dim varA As Variant --------------------------------------------------- Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) If Me.項目名 = varA Then Me.隠しオブジェクト1.Visible = True Else Me.隠しオブジェクト1.Visible = False End If varA = Me.項目名 ???? If Me.内容 = varA Then Me.隠しオブジェクト2.Visible = True Else Me.隠しオブジェクト2.Visible = False End If varA = Me.内容 Dim I, J J = 0 For I = 0 To Me.Count - 1 If Me(I).Section = 0 Then If J < Me(I).Height Then J = Me(I).Height End If End If Next I Me.Line (567 * 0, 567 * 0)-(567 * 0, J) Me.Line (567 * 0.721, 567 * 0)-(567 * 0.721, J) Me.Line (567 * 2.739, 567 * 0)-(567 * 2.739, J) Me.Line (567 * 8.914, 567 * 0)-(567 * 8.914, J) Me.Line (567 * 12.522, 567 * 0)-(567 * 12.522, J) Me.Line (567 * 14.169, 567 * 0)-(567 * 14.169, J) Me.Line (567 * 19.038, 567 * 0)-(567 * 19.038, J) Me.Line (567 * 20.23, 567 * 0)-(567 * 20.23, J) Me.Line (567 * 23.309, 567 * 0)-(567 * 23.309, J) Me.Line (567 * 27.967, 567 * 0)-(567 * 27.967, J) Me.Line (567 * 0, 0)-(567 * 27.967, 0) Me.Line (567 * 0, J)-(567 * 27.967, J) End Sub
お礼
CHRONOS_0さん早速のアドバイス有難うございます。 私の説明が不足していたので申し訳ありません。 Husky2007さんのところに書きましたが、少々難しいのです。 それは、印刷時拡張にした場合各テキストの高さが変わるため、罫線を透明にしておき、VBAで最大の高さに合わせるようにしてあります。 そめため”〃”が表示された箇所の罫線が表示されないことになってしまいます。どうか宜しくお願いいたします。