- 締切済み
Accessで改段を条件によって変えれませんか?
学級名簿を作っています。 性別で改段しているのですが、最後に空白のページが出てしまいます。 各組は1ページに収まるので組で改ページして、女子の場合は改段しないようにしたいのですが、できるでしょうか? よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
もしアクセスの操作だけで可能な問題で、見当はずれの場合は許してください。 エクセルに持ってきて、下記VBAでやれば出来ると思います。縦列順序に2列に印刷すると言うことは、結構プログラムが難しいことのようですが、男女別に振り分けるのは更にプログラムロジックを考える必要がある。 (テストデータ) 組 性別 名前(手抜き、本当は漢字名) 1 男 m1 1 女 f1 1 女 f2 1 女 f3 1 男 m2 1 女 f4 1 男 m3 1 男 m4 1 男 m5 1 女 f5 1 男 m6 1 女 f6 1 男 m7 1 女 f7 1 女 f8 2 女 f9 2 女 f10 2 女 f11 2 男 m8 2 女 f12 2 男 m9 2 女 f13 2 男 m10 2 女 f14 2 男 m11 3 女 f15 (結果) 第1ページ m1 f1 m2 f2 m3 f3 m4 f4 m5 f5 m6 f6 m7 f7 f8 第2ページ m8 f9 m9 f10 m10 f11 m11 f12 f13 f14 (コード)VBA Sub test01() i = 1 j = 1 k = 1 Dim ws1 As Worksheet Set ws1 = Worksheets("sheet1") Dim ws2 As Worksheet Set ws2 = Worksheets("sheet2") m = ws1.Cells(1, "A") '------ p00: If ws1.Cells(i, "A") = "" Then End If ws1.Cells(i, "A") > m Then Range(ws2.Cells(1, 1), ws2.Cells(k, "B")).PrintOut m = ws1.Cells(i, "A") Range(ws2.Cells(1, 1), ws2.Cells(k, "B")).ClearContents j = 1 k = 1 '----- End If If ws1.Cells(i, "B") = "男" Then ws2.Cells(j, "A") = ws1.Cells(i, "C") j = j + 1 Else ws2.Cells(k, "B") = ws1.Cells(i, "C") k = k + 1 End If i = i + 1 GoTo p00 End Sub アクセスVBAでやるならCellsが使えないので 1ページ分の、各列(フィールド)数だけの配列を用意して、まず組が変るまで配列にためて、変ったところで配列データを印刷すればできる。だからロジックはほぼそのまま使える。ただMDBのファイルを読む方法を勉強する必要がある(市販本に載ってますが)。
- laputart
- ベストアンサー率34% (288/843)
具体的にレポートに使うグループを説明していただけないと説明できません。 第1グループ 組 (改ページ) 第2グループ 性別 (改段) でいいのですか? 宜しくお願いします。
補足
そうです、組と性別でグループ分けをしています。 組で改ページ、性別で改段です。 改段を止めると、最後に空白のページは出ません。 そこで、女子では改段をしなければいいのかと思ったのですが。 印刷イメージは次のようになります。 3年B組 佐々木小次郎 倉木麻衣 宮本武蔵 歌田光 丹下作善 人戸用
お礼
ありがとうございます。 VBAでやるという手もあるかもしれませんが、できれば、デザインのプロパティの設定でできれば助かるんですが。 なお、私の試行錯誤で、性別のヘッダーにこのセクション後改段を設定して、性別の詳細部分には何も設定しなければうまくいきました。 (以前はここに番号・氏名とか見出しを入れていたんですが、それをページヘッダーにもっていき、性別の詳細は高さを0にしました。また、以前は性別のフッターに改段を設定していました。)