プロが教える店舗&オフィスのセキュリティ対策術

エクセルマクロについて

データが入力されている列までを印刷範囲とするマクロについてご教示ください。

基本となる列(例えばA4〜A100)に氏名が入りますが、曜日によって人数が異なるため、可変させたいのです。ちなみに、横列はA〜ALで固定となります。

初心者なので、メゾット?を提示していただけると助かります。よろしくお願いします。

A 回答 (3件)

それではこんなのではいかがですか?


--------------------------------------------------------------------------------
Sub Sample()
Dim 行 As Long
For 行 = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Trim(Cells(行, 1).Text) = "" Then
Cells(行, 1).ClearContents
Else
Exit For
End If
Next
ActiveSheet.PageSetup.PrintArea = _
Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 12)).Address
End Sub
--------------------------------------------------------------------------------

※ 知っているとは思いますが念の為です。お気を悪くしないように。
結果確認の時は、印刷してしまうと紙がもったいないので、印刷プレビューで確認してください。
    • good
    • 0
この回答へのお礼

ありがとうございました。無事動きました。ファイルが重いので若干処理が重いですが、シートをコピーする行程で、印刷範囲を自動化できるとかなり手間がはぶけます。
ありがとうございました。

お礼日時:2017/12/11 13:06

こんばんは!



横からお邪魔します。
>別シートから値の貼り付けでコピーしているので、""が入っているのかもしれません・・・

それでは

Sub Sample1()
Dim cnt As Long
With ActiveSheet
cnt = 1
Do While .Cells(cnt, "A") <> ""
cnt = cnt + 1
Loop
.PageSetup.PrintArea = Range(.Cells(1, "A"), .Cells(cnt - 1, "AL")).Address
.PrintPreview
End With
End Sub

ではどうでしょうか?
※ 印刷プレビューでやめています。

※ 列範囲がA~ALとなるとおそらく横列は1ページに収まらないですね。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございました。
勉強になります。

色々試してみましたが、pagesetupの構文でエラーとなります。簡単なマクロならなんとかなるんですが、条件つけると、難しいです(^^;;

お礼日時:2017/12/11 13:14

A列にデータが有る範囲ならば、以下で良いのでは?


--------------------------------------------------------------------------------
Sub Sample()
ActiveSheet.PageSetup.PrintArea = _
Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 12)).Address
End Sub
--------------------------------------------------------------------------------
    • good
    • 1
この回答へのお礼

ありがとうございました。
早速、試してみましたが、データが入力されていない範囲まで印刷されてしまいます。

印刷範囲を設定する前に、別シートから値の貼り付けでコピーしているので、""が入っているのかもしれません(・・;)

お礼日時:2017/12/10 15:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!