- ベストアンサー
VBA 印刷範囲設定がうまくいかない
変数cntに値を代入し印刷範囲が変わるという事を、以下のコードで実行しようとしています。 Sub Macro1() cnt = 9 Sheets("A").Activate 範囲 = Sheets("A").Range(Cells(1, 1), Cells(33, cnt + 1)) ActiveSheet.PageSetup.PrintArea = 範囲 上記のコードですと、シート「A」のセルA1~J33までが印刷範囲になると思ったのですが、実行すると全く関係ないセルまで印刷範囲になってしまいます。 「A」シートには罫線やデータが入力されているセルが他にもあり、どうやらそれらのセルも同じく印刷範囲とされてしまっているようなのです。(例えばK列に罫線が引いてあり、セルに色がついているとK列まで印刷範囲になる) Sheets("A").Range(Cells(1, 1), Cells(33, cnt + 1)).select とすれば、望みどおりのセル範囲A1~J33がきちんと選択されるのですが、印刷範囲ではなぜこのようなことになってしまうのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
範囲 = Sheets("A").Range(Cells(1, 1), Cells(33, cnt + 1)) これを Set 範囲 = Sheets("A").Range(Cells(1, 1), Cells(33, cnt + 1)) とする
その他の回答 (1)
- rivoisu
- ベストアンサー率36% (97/264)
範囲 = Sheets("A").Range(Cells(1, 1), Cells(33, cnt + 1)) ActiveSheet.PageSetup.PrintArea = 範囲 #1さんの言われたように範囲はrangeオブジェクトですからSetを使います。 もうひとつ Printareaはrangeのアドレスで指定しなければなりません。 ActiveSheet.PageSetup.PrintArea = 範囲.address 範囲はきちんと変数宣言しておいたほうがいいですね。 Dim 範囲 as range