VBA PrintArea に引数を使いたい
お世話になります
入力ファイルのある項目を抽出したデータを出力ファイルに同一フォーマットで出力しています。
この時印刷範囲の指定を行ってますが、経験値により概算で印刷されるであろう枚数を
PrintAreaに指定していて、現状では抽出データの編集されたページ以降も何枚か印刷
の対象に入っているため、ムダな紙がプリントされてしまいます。
そこでディテイルカウントなる物を設け、改ページ毎カウントアップして印刷時に、プリントエリアを指定
するところで使いたいのですが、実行時エラー'1004'PrintArea が設定できませんのエラーが出て
しまいます。
指定でよい方法があったらご教示願います。以下VBAの内容です。
Sub P_Print()
'
Dim D_cnt As Integer
Dim sh1 As Worksheet '添字
Dim sh2 As Worksheet 'd ; 入力データ、エクセルファイルの最終行番号
Dim d As Integer 'i ; 入力データ読込件数
Dim i As Integer 'j ; 出力側シートのラインカウンタ
Dim j As Integer ' (5 -> 54行の間のループ)
Dim K As Integer 'k ; 出力側シートのライン行
' (実際に書き込む行)
If 諸表印刷.記録A.Value = True Then
Windows("記録(A).xls").Activate
End If
If 諸表印刷.記録B.Value = True Then
Windows("記録(B).xls").Activate
End If
If 諸表印刷.記録C.Value = True Then
Windows("記録(C).xls").Activate
End If
Sheets("原紙").Select
Sheets("原紙").Copy Before:=Sheets(2)
Sheets("原紙 (2)").Select
Set sh2 = Worksheets("原紙 (2)")
Windows("データ 2013年度").Activate
Set sh1 = Worksheets(combo_sel)
'諸表印刷フォームで選択されたシートをセット
d = sh1.Range("A65536").End(xlUp).Row
K = 5
j = 5
For i = 2 To d
If sh1.Cells(i, "O") = P_sel Then
If j < 55 Then
'sh2.Cells(k, "A") = sh1.Cells(i, "A")
'sh2.Cells(k, "B") = sh1.Cells(i, "B")
'sh2.Cells(k, "C") = sh1.Cells(i, "C")
'sh2.Cells(k, "D") = sh1.Cells(i, "D")
'sh2.Cells(k, "E") = sh1.Cells(i, "E")
'sh2.Cells(k, "F") = sh1.Cells(i, "F")
'sh2.Cells(k, "G") = sh1.Cells(i, "G")
K = K + 1
j = j + 1
Else '改ページ処理、Detail1行目の編集
K = K + 8
j = 5
'sh2.Cells(k, "A") = sh1.Cells(i, "A")
'sh2.Cells(k, "B") = sh1.Cells(i, "B")
'sh2.Cells(k, "C") = sh1.Cells(i, "C")
'sh2.Cells(k, "D") = sh1.Cells(i, "D")
'sh2.Cells(k, "E") = sh1.Cells(i, "E")
'sh2.Cells(k, "F") = sh1.Cells(i, "F")
'sh2.Cells(k, "G") = sh1.Cells(i, "G")
K = K + 1
j = j + 1
D_cnt = D_cnt + 1 ←ここでディテイルカウント +1
End If
End If
Next i
If 諸表印刷.記録A.Value = True Then
Windows("記録(A).xls").Activate
ActiveSheet.PageSetup.PrintArea = "$A$1:$N$(D_cnt*58)" ←ここでエラーが出る
End If
If 諸表印刷.記録B.Value = True Then
Windows("記録(B).xls").Activate
ActiveSheet.PageSetup.PrintArea = "$A$1:$N$(D_cnt*58)" ←ここでエラーが出る
End If
If 諸表印刷.記録C.Value = True Then
Windows("記録(C).xls").Activate
ActiveSheet.PageSetup.PrintArea = "$A$1:$N$(D_cnt*58)" ←ここでエラーが出る
End If
End sub
お礼
ありがとうございました、うまくできました。アドバイスもいただき、役立ちました。今後とも宜しくお願いします。