プロが教えるわが家の防犯対策術!

いつもお世話になります。
Access97で名簿のレポートを作っています。
グループフッターを使ってフッターをつけているのですが、
グループのうち、最初のグループのみにフッターをつけて、あとのグループにはつけないということができるのでしょうか?
初心者につき、変な質問の仕方をしているかもしれませんが、ご回答お願いします。

A 回答 (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つめのグループでは印字されなかったのですが、2つめのグループには印字されました。
まだどこかおかしいところがあるのでしょうか??

補足日時:2005/04/25 12:12
    • good
    • 0

#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

これでプレビューから印刷しても大丈夫・・・だと思います。
    • good
    • 0
この回答へのお礼

何度もありがとうございました。
やってみたのですが、今度は、表示されなくなりました。
Falseの部分をTrueに変えると、1つめ以外が表示されたので、間違いではないのでしょうけれど…。

とりあえず、プレビューから印刷しなければ問題ないので、これでなんとかなりそうです。
今回はコピペで対応しましたが、次回からはしっかり内容を理解してやってみようと思います。
ありがとうございました。

お礼日時:2005/04/26 10:55

> #2の方の方法をやってみたのですが、プレビューではうまくなっているのに、


> 印刷するとフッターが入りません。

あー、そうか、ごめんなさい。
一度プレビューを表示してから印刷をする場合は、そうなってしまいますね。
もし、フッターを表示する場合の条件(例えばグループ名が「AAA」の場合、など)
が決まっているのであれば、#1の方の書いてらっしゃる方法の方が簡単で良さそう
です。
流用させていただいちゃいますが、

if グループ名="AAA" then
グループフッター1.visible=true
else
グループフッター1.visible=false
end if

ということです。

> このように操作したところ、3つめのグループでは印字されなかったのですが、
> 2つめのグループには印字されました。

うーん、もしよろしければ、VBAのコードを全部貼り付けしていただければ、何か
わかるかもしれません。

この回答への補足

ありがとうございます。
どうも、IF文を使うと、うまくいかないので、
#2さんの最初の方法でやることにします。
プレビューをせずに印刷をすれば大丈夫でした。
プレビューしてもうまく印刷する方法があればそれにこしたことはないのですが、
プレビューしてもうまく印刷する方法となると
もうちょっと違う命令文を入れることになるんですか?
お忙しいところもうしわけありません。
よろしくお願いします。

補足日時:2005/04/25 13:28
    • good
    • 0

グループフッターで最初のグループの時に「可視(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の方の方法をやってみたのですが、プレビューではうまくなっているのに、印刷するとフッターが入りません。
どこか変なことをしているのでしょうか…?

補足日時:2005/04/25 13:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!