- ベストアンサー
Access97レポートでのフッターについて
いつもお世話になります。 Access97で名簿のレポートを作っています。 グループフッターを使ってフッターをつけているのですが、 グループのうち、最初のグループのみにフッターをつけて、あとのグループにはつけないということができるのでしょうか? 初心者につき、変な質問の仕方をしているかもしれませんが、ご回答お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBAを使えば可能ですね。 初心者ということですから、VBAは使ったことないでしょうか? そんなに難しくないので・・・。 レポートをデザインビューで開き、「レポートヘッダー」を選択してください。 プロパティの「印刷時」イベントを選択し、右側の「…」ボタンを押してください。 一覧から「コードビルダ」を選択してください。 出てきた画面の一番上に(たぶん) Option Compare Database Option Explicit とあると思いますので、その下に Dim FVisible As Boolean と書いてください。 で、その下にこういうのがあると思いますが、 Private Sub レポートヘッダー_Print(Cancel As Integer, PrintCount As Integer) End Sub こう書いてください。 Private Sub レポートヘッダー_Print(Cancel As Integer, PrintCount As Integer) FVisible = True End Sub 書いたら、レポートのデザインに戻ります。 操作したいフッターを選択し、プロパティから同様にコードビルダを選択します。 出てきた画面でこう書きます。 Private Sub グループフッター0_Print(Cancel As Integer, PrintCount As Integer) Me.グループフッター0.Visible = FVisible FVisible = False End Sub これでOKだと思います。 1つめの場合のみ、グループフッターの「可視」を「はい」にする、ということを しています。
その他の回答 (3)
- yoko3333
- ベストアンサー率35% (47/134)
#2、3 です。 すみません、少し方針を変更すればOKなことに気が付きました。(たぶん・・・。) グループフッターを表示しているグループでは、ヘッダーは表示していますか? もし表示していない場合は表示させてください。 ヘッダーの高さが 0 ではうまく動作しないので、「0.01cm」でも良いので 0 より 大きくしてください。 そのグループヘッダーの「印刷時」イベントに Private Sub グループヘッダー0_Print(Cancel As Integer, PrintCount As Integer) Me.グループフッター0.Visible = FVisible FVisible = False End Sub と書いてください。 #2に書いたフッターのコードは削除してください。 要するに、コードは全部でこうなります。 Option Compare Database Option Explicit Dim FVisible As Boolean Private Sub グループヘッダー0_Print(Cancel As Integer, PrintCount As Integer) Me.グループフッター0.Visible = FVisible FVisible = False End Sub Private Sub レポートヘッダー_Print(Cancel As Integer, PrintCount As Integer) FVisible = True End Sub これでプレビューから印刷しても大丈夫・・・だと思います。
お礼
何度もありがとうございました。 やってみたのですが、今度は、表示されなくなりました。 Falseの部分をTrueに変えると、1つめ以外が表示されたので、間違いではないのでしょうけれど…。 とりあえず、プレビューから印刷しなければ問題ないので、これでなんとかなりそうです。 今回はコピペで対応しましたが、次回からはしっかり内容を理解してやってみようと思います。 ありがとうございました。
- yoko3333
- ベストアンサー率35% (47/134)
> #2の方の方法をやってみたのですが、プレビューではうまくなっているのに、 > 印刷するとフッターが入りません。 あー、そうか、ごめんなさい。 一度プレビューを表示してから印刷をする場合は、そうなってしまいますね。 もし、フッターを表示する場合の条件(例えばグループ名が「AAA」の場合、など) が決まっているのであれば、#1の方の書いてらっしゃる方法の方が簡単で良さそう です。 流用させていただいちゃいますが、 if グループ名="AAA" then グループフッター1.visible=true else グループフッター1.visible=false end if ということです。 > このように操作したところ、3つめのグループでは印字されなかったのですが、 > 2つめのグループには印字されました。 うーん、もしよろしければ、VBAのコードを全部貼り付けしていただければ、何か わかるかもしれません。
補足
ありがとうございます。 どうも、IF文を使うと、うまくいかないので、 #2さんの最初の方法でやることにします。 プレビューをせずに印刷をすれば大丈夫でした。 プレビューしてもうまく印刷する方法があればそれにこしたことはないのですが、 プレビューしてもうまく印刷する方法となると もうちょっと違う命令文を入れることになるんですか? お忙しいところもうしわけありません。 よろしくお願いします。
- keikan
- ベストアンサー率42% (75/176)
グループフッターで最初のグループの時に「可視(visible)」をTrueにしてそれ以外の時にFalseにすればできます。 Private Sub グループフッター1_Format(Cancel As Integer, FormatCount As Integer) if グループID=1 then グループフッター1.visible=true else グループフッター1.visible=false endif end sub こんな感じです。
補足
回答ありがとうございます。 グループIDの部分になにを入れたらいいのかわからず、グループ名を入れてみたのですがうまくいかなかったです。 #2の方の方法をやってみたのですが、プレビューではうまくなっているのに、印刷するとフッターが入りません。 どこか変なことをしているのでしょうか…?
補足
丁寧な説明ありがとうございます。 このように操作したところ、3つめのグループでは印字されなかったのですが、2つめのグループには印字されました。 まだどこかおかしいところがあるのでしょうか??