- ベストアンサー
マクロで連続印刷する方法と番号がない場合の対処法
- マクロ初心者の方がピボットテーブルで連続印刷をする方法について質問しています。番号がないときにエラーが発生し止まってしまう問題にも対処する方法を教えてほしいとのことです。
- 質問者はマクロで連続印刷を行う際に、番号がない場合にエラーが発生する問題に直面しています。これを解決するための方法を教えてほしいとのことです。
- マクロ初心者がピボットテーブルを使用して連続印刷を行おうとしていますが、番号がない場合にエラーが発生してしまいます。どのようにすれば番号がない場合でも正常に印刷を行えるのか、教えてください。
- みんなの回答 (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
お礼
丁寧な回答ありがとうございます。 マクロ初心者なので本当に助かります。 ご指摘の通り毎回ピボットテーブルを作ってやっていたのでその時によって番号がなかったりあったりするのでコードを手作業で消していました。 さっそく試してみます。