dポイントプレゼントキャンペーン実施中!

マクロ初心者です。
ピボットテーブルでマクロを使って連続印刷をしようと思いました。

一応やってみて連続で印刷は出来たのですが番号がないときエラーになってしまします。
たとえば"562"という番号がないときエラーになって止まってしまいます。

番号がないときは飛ばして印刷するにはどのようにしたらよいでしょうか?

よろしくお願いします。

Sub 連続印刷()
'
' 連続印刷 Macro
'

'

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _
"562"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _
"947"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _
"950"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _
"952"



End Sub

「マクロ 連続印刷」の質問画像

A 回答 (1件)

>たとえば"562"という番号がないときエラーになって止まってしまいます。



この状況が発生する原因としては、(今回掲示されたマクロ以前に他のマクロで?)「毎回イチイチ新しくピボットテーブルレポートを作成し直している」事が考えられます。
ピボットテーブルでは、新しいデータは元データシートに「追加し・入れなおして」その時まで作ってあったピボットテーブルを「更新」して使います。

こういう作り方をすることで、562が「今回のリストにはたまたま含まれていない」場合でもマクロがエラーになることは無くなります。まぁ、562は選べて、中身(該当品目や合計)は空っぽという状態になりますが。



で。
>番号がないときは飛ばして印刷するにはどのようにしたらよいでしょうか?

具体的な対応方法としては、今回あなたが「どーしたいのか」に応じてやり口はいろいろ変わります。

1.今のマクロを使い続けたい(毎回ピボットテーブルを新たに作りたい)
1a)今現在の元データに562などが含まれているかいないかをイチイチ調べて印刷するかどうか決める
1b)今現在の元データに含まれているコードを全部拾って印刷してしまう

2.今のやり方は改めて、一回作ったピボットテーブルレポートを使いまわすやり方に変える
こちらはまぁでも、今の時点では多分お好みじゃないと思うので割愛します。



別の方策として、今のマクロを極力そのまま残して「エラー処置」だけで回避してみます。


Sub 連続印刷()
'
' 連続印刷 Macro
'

dim flg as boolean
on error goto errhandle

flg = true
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = "562"
if flg then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False

flg = true
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = "947"
if flg then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False

flg = true
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = "950"
if flg then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False

flg = true
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = "952"
if flg then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False

exit sub
errhandle:
flg = false
resume next

End Sub
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございます。
マクロ初心者なので本当に助かります。
ご指摘の通り毎回ピボットテーブルを作ってやっていたのでその時によって番号がなかったりあったりするのでコードを手作業で消していました。
さっそく試してみます。

お礼日時:2014/04/13 14:46

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