- 締切済み
エクセル365のVBAで印刷ページ指定
エクセル365のVBAを使用して、 データの入力個数に応じて印刷ページを指定したいと 考えています。 30個のデータごとに、1枚の表になるような レイアウトになっています。 例えば 1~30 1枚 31~60 2枚 61~90 3枚 という風に印刷できるような D列がD8セルをスタートとして、 下に向かってデータが埋められていき、 900個までデータが入ることがあります。 また D5セルには=COUNTA関数でD列のデータ入力個数が分かるようになっています。 上記から下記の範囲指定のマクロの様に TOの後に D5のデータを30で割ったらいいんじゃないか? と思い以下の様に考えましたが、 Worksheets(1).PrintOut From:=1, To:=Range("D5/30").value よく考えると30で割ったら、小数点になってしまうので、 うまくいかない感じもしました。 一番下のセルを検索して、それに応じて場合分けをすればいいかとも 考えましたが、 どのように書けばいいのかいまいちんよくわかりません。 くわしい方いらっしゃいましたら、 教えていただければと思います。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- misatoanna
- ベストアンサー率58% (528/896)
一枚目の印刷範囲は、8行目からの30行だけなのでしょうか。 それとも、1行目から37行目までなのでしょうか。 二枚目の印刷範囲は、38行目から67行目だけなのでしょうか。 それとも、1~7行と38~67行なのでしょうか。 このへんが不明ですが、30行ずつ印刷するのでしたら、次のように記述されたらいかがでしょうか。 このままでしたら、一枚目は1行目から37行目まで、二枚目以降はデータ行だけを印刷します。 Sub Test() Dim r As Long ActiveSheet.ResetAllPageBreaks For r = 38 To Range("B5").Value Step 30 ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(r) Next ActiveSheet.PrintPreview ActiveSheet.ResetAllPageBreaks End Sub
お礼
回答いただきありがとうございます 印刷範囲を指定することもできるのですね。 試してみたいと思います。 とても参考になりました
補足
回答いただきありがとうございます。 1から7行目までは印刷タイトルで設定されています。