[[20191030165045]] 『印刷範囲の指定に変数を使いつつ、複数の範囲を指』(sato) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『印刷範囲の指定に変数を使いつつ、複数の範囲を指定する方法』(sato)

お世話になります。

 Sub Macro1()
   Dim num As Integer
   num = WorksheetFunction.CountA(Range("A:A"))
   AAA = Range(Cells(5, 3), Cells(num + 3, 3)).Address
   BBB = Range(Cells(5, 5), Cells(num + 3, 5)).Address
   CCC = Range(Cells(5, 22), Cells(num + 3, 22)).Address
   DDD = Range(Cells(5, 32), Cells(num + 3, 32)).Address
   ActiveSheet.PageSetup.PrintArea = ""
   ActiveSheet.PageSetup.PrintArea = AAA
   ActiveSheet.PageSetup.PrintArea = BBB
   ActiveSheet.PageSetup.PrintArea = CCC
   ActiveSheet.PageSetup.PrintArea = DDD
   ActiveWindow.SelectedSheets.PrintPreview
 End Sub

 上記マクロを実行しますと印刷範囲がDDDの範囲のみになってしまいます。
 AAA,BBB,CCC,DDDの範囲を1ページに印刷したいのですが、
 ActiveSheet.PageSetup.PrintArea = AAA,BBB,CCC,DDDや
 ActiveSheet.PageSetup.PrintArea = "AAA","BBB","CCC","DDD"にするとエラーでマクロが実行ができませんでした。
 どのようにマクロを書けばAAA〜DDDまでの範囲を1ページに印刷できるでしょうか?

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 >ActiveSheet.PageSetup.PrintArea = AAA
 >ActiveSheet.PageSetup.PrintArea = BBB
 >ActiveSheet.PageSetup.PrintArea = CCC
 >ActiveSheet.PageSetup.PrintArea = DDD
 を
 ActiveSheet.PageSetup.PrintArea = AAA & "," & BBB & "," & CCC & "," & DDD
 ではどうだろうか?

(ねむねむ) 2019/10/30(水) 17:06


 PrintAreaには対照セル範囲を文字列で指定する。
 AAAからDDDの内容は文字列なので区切り文字,を文字列(",")として付加する。
(ねむねむ) 2019/10/30(水) 17:09

 こんなのでもいいかもです

 Sub Macro1()
   Dim num As Integer
   Dim myPr As Range
   num = WorksheetFunction.CountA(Range("A:A"))
   Set myPr = Union(Range(Cells(5, 3), Cells(num + 3, 3)), _
                Range(Cells(5, 5), Cells(num + 3, 5)), _
                Range(Cells(5, 22), Cells(num + 3, 22)), _
                Range(Cells(5, 32), Cells(num + 3, 32)))
   ActiveSheet.PageSetup.PrintArea = myPr.Address
   ActiveWindow.SelectedSheets.PrintPreview
 End Sub

(渡辺ひかる) 2019/10/30(水) 17:20


 ありがとうございます。
 お二方のやり方でどちらも範囲指定自体はできたのですが、1〜3ページ目にAAA、4〜6ページ目にBBB、7〜9ページ目にCCC、10〜12ページ目にDDDが印刷されるようになりましたが、
 今さらながらこの方法ですと希望する印刷結果が得られない事が分かりました。
 希望としましてはAAA〜DDD以外の列を非表示にした状態で印刷した時のように、AAA〜DDDで指定した範囲が1ページに収まるよう幅を縮小して印刷がしたいです。
 毎回列を非表示にするかグループ化してマイナスボタンを押してから印刷をして、その後全ての行を再表示…といった作業を簡単にできないかなと思った次第です。
(sato) 2019/10/31(木) 13:01

 Sub Macro1()
   Dim num As Long

   num = WorksheetFunction.CountA(Range("A:A"))

   Range("D:D,F:U,W:AE").EntireColumn.Hidden = True

   ActiveSheet.PageSetup.PrintArea = Range(Cells(5, 3), Cells(num + 3, 32)).Address
   ActiveWindow.SelectedSheets.PrintPreview

   Range("D:D,F:U,W:AE").EntireColumn.Hidden = False

 End Sub

(渡辺ひかる) 2019/10/31(木) 13:38

 13:45 不要変数削除

 返信ありがとうございます。
 無事に印刷結果を得られる事ができました。
 このマクロをコマンドボタンに割り当てたところ、最初の1回だけボタンが押せるのですが印刷プレビューを閉じた後にコマンドボタンを押してもマクロが実行されなくなってしまいました。
 具体的にはJKL列のあたりに用意したコマンドボタンを押している間だけVWX列のあたりにコマンドボタンが現れ、ボタンを離すとVWX列に出現していたコマンドボタンが消えます。
 コマンドボタン押下時は教えて頂いたマクロが実行されるようにしか設定していないのですが、何か解決策はありませんでしょうか?
(sato) 2019/10/31(木) 16:16

 それはExcelのバグかもしれません。

 ブックを保存して、再度開くと、ボタンがずれたり、サイズが変わったりしていませんか?

 確実に再現するのは、複数シートを選択して、表示倍率を変え印刷プレビューでも倍率を変え
 印刷して、再度ボタンを押すと、本来の位置とは別な場所にボタンのゴーストが現れ
 保存して再度開くと、ボタンの 位置、サイズが変わっているというものです。
 (こちらの環境はWIN10 Excel2010ですが)

 対策としては、表示倍率を変えないということくらいですが
 複数セル範囲の印刷でも 発生するというのは 初めてです。

(渡辺ひかる) 2019/10/31(木) 17:14


 ありがとうございます。
 列の表示・非表示の際にコマンドボタンのある列が影響を受けてボタンごと消えてするのが原因のようでした。
 再表示した際にボタン自体は表示されるのですがバグか何かでボタンが押せなくなっていたようです。
 コマンドボタンを右クリックしてコントロールの書式設定から「セルに合わせて移動やサイズ変更をしない」にチェックを入れれば大丈夫でした。
(sato) 2019/10/31(木) 17:44

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.