こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2007-07-29 10:00:10

QNo.3208850

すぐに回答ほしいです

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

VBAもなにも要りません
="〃"
としたテキストボックスの上に重複データ非表示としたテキストボックスを重ねておくだけでOKです

投稿日時 - 2007-07-29 11:50:21

お礼

CHRONOS_0さん早速のアドバイス有難うございます。
私の説明が不足していたので申し訳ありません。
Husky2007さんのところに書きましたが、少々難しいのです。
それは、印刷時拡張にした場合各テキストの高さが変わるため、罫線を透明にしておき、VBAで最大の高さに合わせるようにしてあります。
そめため”〃”が表示された箇所の罫線が表示されないことになってしまいます。どうか宜しくお願いいたします。

投稿日時 - 2007-07-29 12:21:09

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

補足:Me.項目名_ダミーは、ラベルを使っています。

投稿日時 - 2007-07-30 08:36:24

背景色を利用して見せる・見せないを演出したのが罫線が隠れた不具合の原因。
そこで、ダミーの文字色を白と黒とにすることで同じことを実現する手法に変更。
注意すべきは、ページが変わった時に重複非表示がキャンセルされること。
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

一応、こんな感じで目的が達成されます。

投稿日時 - 2007-07-29 16:14:49

お礼

何度もありがとうございます。
色々試しましたが、何度試してもエラーです。レポートの詳細に書こうとしましたが違うようです。私のレベルが未熟であることを思い知らされました。めげずにもう少しジックリ勉強してみようと思います。
お休みのところ有難うございました。

投稿日時 - 2007-07-29 20:47:15

ちょっと、考え過ぎですね。

<Tbale1>
ID____項目名
1_____AAA
2_____AAA
3_____BBB
4_____CCC

<Report!Table1>

ID____項目名
1_____AAA
2_____〃
3_____BBB
4_____CCC

と表示されるようにしたいということ。

1、項目名を、背景色を透明でなく普通色で配置します。
2、その項目名の背景に'〃'を配置しておきます。

こうしておけば、重複していなければ、項目名で'〃'は隠されて事実上項目名のみ。
こうしておけば、重複していれば、項目名が非表示になって裏に隠れていた'〃'が表に。

これでOKです。

投稿日時 - 2007-07-29 11:37:49

お礼

早速回答いただき有難うございます。提案いただいた通り実施してみました。確かに私の目的は達成できました。しかし、罫線の表示に別の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

投稿日時 - 2007-07-29 12:11:23

あなたにオススメの質問