
おはようございます。いつも大変お世話になっています。
エクセルで、ある元のシートから、ある条件で抽出して新しいシートを作りました。
その新しいシートの印刷指定方法について教えてください。
最初だけ53行、その後50行づつ区切って印刷したいため、以下のようなVBAを書いてみました。
ActiveWindow.View = xlPageBreakPreview
Set ActiveSheet.HPageBreaks(1).Location = Range("a53")
Set ActiveSheet.HPageBreaks(2).Location = Range("a103")
Set ActiveSheet.HPageBreaks(3).Location = Range("a153")
Set ActiveSheet.HPageBreaks(4).Location = Range("a203")
Set ActiveSheet.HPageBreaks(5).Location = Range("a253")
・・・・・・
が、元のシートのデータが、日によって変動するため、新しいシートのデータが全部で120行位で終わってしまう場合があります。
その場合、100以上の指定していた部分から、
「インデックスが有効範囲にありません」と、止まってしまうのです。
日によってデータの行数は変わりますが、多い場合も同じように50行区切りで印刷したい場合には、どのようにしたら良いでしょうか?
どうぞよろしくお願いします。
No.3
- 回答日時:
>以下のように入れてみましたが、印刷されません。
下記で問題無いかと思います。
データが無くてもエラーが出ません。
-----------------------------------------
'改ページ設定解除
ActiveSheet.ResetAllPageBreaks
'改ページ設定
ActiveSheet.HPageBreaks.Add Before:=Range("a53")
ActiveSheet.HPageBreaks.Add Before:=Range("a103")
ActiveSheet.HPageBreaks.Add Before:=Range("a153")
ActiveSheet.HPageBreaks.Add Before:=Range("a203")
ActiveSheet.HPageBreaks.Add Before:=Range("a253")
ActiveSheet.HPageBreaks.Add Before:=Range("a303")
'印刷プレビュー
ActiveSheet.PrintPreview
--------------------------------
ActiveWindow.~ のプロパティでエラーになっていた感じですね。(ActiveSheet.~に変更)
ご回答ありがとうございます。
何度も申し訳ないのですが、再度教えてください。
No.3のように、入れてみたのですが
印刷すると設定した水平改ページが、まったく反映されないのです。改ページ設定をしない前と、まったく同じ物が印刷されてしまうのです。
hana-hana3さんが教えてくださったVBAに、
ActiveSheet.Printout
とだけ、追加したのですが・・・。
どうしたら良いのでしょうか?
甘えて申し訳ありませんが、教えてください。
No.2
- 回答日時:
>50行区切りで印刷したい場合には
シートの印刷設定で50行が印刷されるように設定したらどうですか?
これなら、自動的に対応してくれます。
記録マクロを使って印刷設定を呼び出すだだけで、簡単に殆どの印刷設定を取得できますから、実行時にこの設定を呼び出すだけです。
>元のシートのデータが、日によって変動するため
データ数をチェックして行うのがベストですが、安直に済ませるなら、On Error Resume Next の一文をマクロの途中(エラーが予測される処理の開始前:今回は Set ActiveSheet.HPageBreaks(1) の前)に入れるとエラーを無視(本来はマクロ中でエラー対処が必要)する事ができます。
http://t_shun.at.infoseek.co.jp/My_Page/Excel-VB …
ご回答ありがとございます。
さっそく2番目の方法でやってみました。
以下のように入れてみましたが、印刷されません。
ActiveWindow.View = xlPageBreakPreview
On Error Resume Next
Set ActiveSheet.HPageBreaks(1).Location = Range("a53")
Set ActiveSheet.HPageBreaks(2).Location = Range("a103")
Set ActiveSheet.HPageBreaks(3).Location = Range("a153")
Set ActiveSheet.HPageBreaks(4).Location = Range("a203")
Set ActiveSheet.HPageBreaks(5).Location = Range("a253")
・・・・・・
ActiveWindow.PrintOut
印刷させるためにはどうしたら良いのですか?
重ね重ね申し訳ないですが、教えてください。
No.1
- 回答日時:
> 日によってデータの行数は変わりますが、多い場合も同じように50行区切りで印刷したい場合には、どのようにしたら良いでしょうか?
orennji1111さん、こんにちは。
その日のデータの最下行を調べ、53行を超える部分に50行がいくつあるかを計算してHPageBreaksを挿入するようにしたらどうでしょう?
こんな感じです。
Sub test()
ActiveWindow.View = xlPageBreakPreview
Set Rng = ActiveSheet.UsedRange'使用範囲設定
x = Rng(Rng.Count).Row'最終行
If x > 53 Then
Set ActiveSheet.HPageBreaks(1).Location = Range("A53")
b = (x - 53) / 50
If b > 1 Then
For i = 1 To b
Set ActiveSheet.HPageBreaks(i + 1).Location = Range("A" & 53 + 50 * i)
Next
End If
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) シート名を簡単に書く方法があれば教えてください。 4 2023/08/24 12:40
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelVBA 改ページの横破線を消す方法
Excel(エクセル)
-
EXCEL、マクロ-改ページ行番号の取得方法を教えてください
Visual Basic(VBA)
-
Excel 改ページのVBAうまくいかないです
Excel(エクセル)
-
-
4
VBAでの改ページ位置の変更
Excel(エクセル)
-
5
EXCEL VBAでHPageBreaks
Excel(エクセル)
-
6
エクセルのページ区切り(点線)の位置をマクロで取得 ※印刷範囲クリア
Excel(エクセル)
-
7
ExcelVBA Range クラスの PageBreak プロパティを設定できません。
Visual Basic(VBA)
-
8
Excelで特定の文字のところで自動的に改ページしたい
Excel(エクセル)
-
9
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
12
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
13
PageBreaks.Countと印刷範囲の設定について
Visual Basic(VBA)
-
14
Excelについて。特定の範囲内で自動的に改ページされることを禁止する
その他(Microsoft Office)
-
15
Excel VBAで文字列の可視長を得るにはどうしたよいでしょうか?
Visual Basic(VBA)
-
16
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
17
VBAでセル値からフォルダ名を取得するコードについて
Excel(エクセル)
-
18
vba 改ページカウントで不可解なエラーを回避したいのですが教えてください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルファイルを開く時、常...
-
エクセルで複数のシートの1枚目...
-
1ヶ月分の日付を一度に出す方法...
-
エクセルの行タイトルを特定の...
-
特定のセルに数値が入っている...
-
エクセルのシート名を印刷した...
-
エクセルの一部のセルの背景色...
-
エクセルのマクロで複数シート...
-
Excel1ブック上で差し込み印刷 ...
-
Excel 特定のシートを印刷不可...
-
エクセルで行番号、列アルファ...
-
エクセルマクロで差し込みした...
-
マクロで印刷→セルの値から部数...
-
エクセルで1個のシートを1枚の...
-
行タイトルを最終ページだけ表...
-
エクセルの印刷で1枚だけ小さ...
-
【Excel】複数シートがあるエク...
-
エクセルでシートの色がグレー...
-
印刷中ダイアログについて
-
エクセル印刷時 一枚の書類に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルを開く時、常...
-
Excel 特定のシートを印刷不可...
-
エクセルの一部のセルの背景色...
-
エクセルの行タイトルを特定の...
-
マクロで印刷→セルの値から部数...
-
エクセルで行番号、列アルファ...
-
1ヶ月分の日付を一度に出す方法...
-
エクセルで複数のシートの1枚目...
-
エクセル印刷時 一枚の書類に...
-
特定のセルに数値が入っている...
-
エクセルのマクロで複数シート...
-
エクセルのシート名を印刷した...
-
行タイトルを最終ページだけ表...
-
Excelでシートを複数シート選択...
-
【Excel】複数シートがあるエク...
-
エクセルでのヘッダーをページ...
-
エクセルで同一シート上にA3とA...
-
特定のシートのみ印刷できない...
-
Excelであるシートだけ印刷でき...
-
エクセルで、ヘッダーに他のシ...
おすすめ情報