Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9547 / 13644 ツリー ←次へ | 前へ→

【26750】印刷エリアの変更 MokoMoko 05/7/16(土) 13:31 質問[未読]
【26751】Re:印刷エリアの変更 kobasan 05/7/16(土) 13:57 回答[未読]
【26752】Re:印刷エリアの変更 MokoMoko 05/7/16(土) 14:12 お礼[未読]
【26753】Re:印刷エリアの変更 Jaka 05/7/16(土) 14:22 発言[未読]
【26754】Re:印刷エリアの変更 MokoMoko 05/7/16(土) 14:32 お礼[未読]
【26755】Re:印刷エリアの変更 MokoMoko 05/7/16(土) 15:33 質問[未読]
【26756】Re:印刷エリアの変更 かみちゃん 05/7/16(土) 15:39 回答[未読]
【26758】Re:印刷エリアの変更 MokoMoko 05/7/16(土) 15:53 お礼[未読]
【26757】Re:印刷エリアの変更 Jaka 05/7/16(土) 15:47 回答[未読]
【26772】Re:印刷エリアの変更 nossori 05/7/17(日) 9:04 お礼[未読]

【26750】印刷エリアの変更
質問  MokoMoko  - 05/7/16(土) 13:31 -

引用なし
パスワード
   シートが異なるたびに印刷のエリアを変更させる必要があります。
印刷のエリア指定のマクロに付いてお聞きします。

ActiveSheet.PageSetup.PrintArea =⇒以降のコードの書き方を教えてください。

Sub Macro()
  Dim Rw As Integer
  Dim Cu As Integer

  Sheets("Sheet1").Select
   Rw = Cells(65536, 1).End(xlUp).Row
   Cu = Cells(1, 256).End(xlToLeft).Column
  
  ActiveSheet.PageSetup.PrintArea =
  ActiveSheet.Selected.Sheet.PrintOut Copy:=1
  
  ActiveSheet.PageSetup.PrintArea = ""
  
End Sub

【26751】Re:印刷エリアの変更
回答  kobasan  - 05/7/16(土) 13:57 -

引用なし
パスワード
   ▼MokoMoko さん 今日は。

>シートが異なるたびに印刷のエリアを変更させる必要があります。
>印刷のエリア指定のマクロに付いてお聞きします。
>
>ActiveSheet.PageSetup.PrintArea =⇒以降のコードの書き方を教えてください。
>
>   Rw = Cells(65536, 1).End(xlUp).Row
>   Cu = Cells(1, 256).End(xlToLeft).Column
>  
>  ActiveSheet.PageSetup.PrintArea =


Rw,Cuは使っていませんが、データがある範囲でいいなら、

ActiveSheet.PageSetup.PrintArea = UsedRange.Address

これでできます。

【26752】Re:印刷エリアの変更
お礼  MokoMoko  - 05/7/16(土) 14:12 -

引用なし
パスワード
   ▼kobasan さん:
ありがとうございます。addressを使えば良かったのですね。

  ActiveSheet.PageSetup.PrintArea = Range(Cells(Rw, 1), Cells(1, Cu)).Address

これで実行できました。指定のフォーム以外に、作業スペースに数字を入れています。
その場合は、「ActiveSheet.PageSetup.PrintArea = UsedRange.Address」は少し問題ありということになりますね。

でも、テストしますと「実行時エラー424:オブジェクトが必要です」とでますが・・・

何が問題なのでしょう。

【26753】Re:印刷エリアの変更
発言  Jaka  - 05/7/16(土) 14:22 -

引用なし
パスワード
    ▼MokoMoko さん:
>その場合は、「ActiveSheet.PageSetup.PrintArea = UsedRange.Address」は少し問題ありということになりますね。
>
>でも、テストしますと「実行時エラー424:オブジェクトが必要です」とでますが・・・
>
>何が問題なのでしょう。

ActiveSheet.UsedRange.Address
  ↑
 シートを指定してないから...。UsedRangeにシートの指定は絶対条件です。
 最近のエクセルは知らないけど。

【26754】Re:印刷エリアの変更
お礼  MokoMoko  - 05/7/16(土) 14:32 -

引用なし
パスワード
   ▼Jaka さん:

>ActiveSheet.UsedRange.Address
>  ↑
> シートを指定してないから...。UsedRangeにシートの指定は絶対条件です。
> 最近のエクセルは知らないけど。

よく分かりました。ありがとうございます。
これからこのコードも使うように心がけます。

【26755】Re:印刷エリアの変更
質問  MokoMoko  - 05/7/16(土) 15:33 -

引用なし
パスワード
   ▼Jaka さん:

もう一つお願いします。
CurrentRegionを使って、印刷範囲の指定ができる方法があるのでしょうか。
教えていただけませんでしょうか。

  Sheets("Sheet1").Select
  Cells(65536, 1).End(xlUp).CurrentRegion.Select
  
  ActiveSheet.PageSetup.PrintArea = ActiveSheet.Selected.Address←???
'  ActiveSheet.Selected.Sheet.PrintOut Copy:=1
  
  ActiveSheet.PageSetup.PrintArea = "

【26756】Re:印刷エリアの変更
回答  かみちゃん  - 05/7/16(土) 15:39 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>CurrentRegionを使って、印刷範囲の指定ができる方法があるのでしょうか。

「マクロの記録」はされましたでしょうか?
たとえば、こんな感じに記録されます。
Sub Macro1()
 ActiveSheet.PageSetup.PrintArea = "$A$1:$F$10"
End Sub
そこで、
"$A$1:$F$10"
の部分を
Range("A1").CurrentRegion.Address
とすれば、いいわけです。

【26757】Re:印刷エリアの変更
回答  Jaka  - 05/7/16(土) 15:47 -

引用なし
パスワード
   CurrentRegionは、データ状態によって範囲がころころ変わるから、余り使った事ないけど。

これで合っているんだったら
>  Sheets("Sheet1").Select
>  Cells(65536, 1).End(xlUp).CurrentRegion.Select

adad = Sheets("Sheet1").Cells(65536, 1).End(xlUp).CurrentRegion.address
Sheets("Sheet1").PageSetup.PrintArea = adad

これでいいと思いますけど。

【26758】Re:印刷エリアの変更
お礼  MokoMoko  - 05/7/16(土) 15:53 -

引用なし
パスワード
   ▼かみちゃん さん:
>「マクロの記録」はされましたでしょうか?

やりました。でも、思いつかず・・・・・

>たとえば、こんな感じに記録されます。
>Sub Macro1()
> ActiveSheet.PageSetup.PrintArea = "$A$1:$F$10"
>End Sub

>そこで、
>"$A$1:$F$10"
>の部分を
>Range("A1").CurrentRegion.Address
>とすれば、いいわけです。

思い当たりませんでした。ありがとうございました。

【26772】Re:印刷エリアの変更
お礼  nossori  - 05/7/17(日) 9:04 -

引用なし
パスワード
   ▼Jaka さん:

おはようございます。
色々とご指導ありがとうございます。

お陰さまで解決しました。
これからもJakaさんからの丁寧な回答を期待していますのでよろしく
お願いします。では失礼します。

9547 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free