[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『印刷範囲の指定に変数を使いつつ、複数の範囲を指定する方法』(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.