![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
エクセル2010を使用しています。
毎日配送表を印刷しているのですが、印刷範囲を一定のルールに基づいて変えているのですが、マクロなどにより自動化できないかと思い質問させていただきました。
条件は下記の通りです。
(1)印刷範囲はA列からQ列まで
(2)行は日によって変化する
(3)B列には1~5999までの数字が打ち込まれており、日によって「3999」まで「4999」までと変動あり
(4)変動する最後の数字の行まで、A~Q列全てに情報が打ち込まれているが、それ以降の行、列ともに空白の状態
個人的にはB列の数字を基準として「B列が<5999」までの範囲を「A~Q列まで」選択
といったようにできればイメージに近いものになるのかなぁと思っていますが、力不足でどうすればよいのか分かりません。
どなたか助けていただけないでしょうか??
No.1ベストアンサー
- 回答日時:
こんばんは!
http://oshiete.goo.ne.jp/qa/8869869.html
の関連質問でしょうか?
質問文を読み返してみると、結局1行目~B列最終行までを印刷範囲としたい!
というように読み取れますので、
その場合は↓のコードにしてみてください。(シートモジュールです)
Sub Sample2()
Dim lastRow As Long
With ActiveSheet
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
.PageSetup.PrintArea = Range(.Cells(1, "A"), .Cells(lastRow, "Q")).Address
.PrintPreview '★
.PageSetup.PrintArea = ""
End With
End Sub
※ 余計なお世話かもしれませんが、
解釈の仕方によってはご自身で番号が○番~○番までを印刷範囲としたい!というコトかもしれませんので
その場合は↓のコードにしてみてください。
Sub Sample3()
Dim lastRow As Long, myStart As String, myLast As String
With ActiveSheet
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
myStart = InputBox("開始番号を入力")
myLast = InputBox("終了番号を入力")
If myStart <> "" And myLast <> "" Then
.Range("A1").AutoFilter field:=2, Criteria1:=">=" & myStart, Operator:=xlAnd, _
Criteria2:="<=" & myLast
.PageSetup.PrintArea = Range(.Cells(2, "A"), .Cells(lastRow, "Q")).SpecialCells(xlCellTypeVisible).Address
.PrintPreview '★
.PageSetup.PrintArea = ""
.AutoFilterMode = False
End If
End With
End Sub
※ Sample3の方は手作業でオートフィルタ → 数値フィルタ → 指定の範囲内 で対処できます。
※ どちらのコードも印刷プレビューまでにしています。m(_ _)m
No.2
- 回答日時:
表を印刷するということで、1~数行目まで文字が入っている事を考慮していますが、
そのB列の数字が昇順で並んでいることを前提にしています
B列の数字が不規則に並んでいる場合は対応していません(抽出しているわけではない為)
簡単なエラー処理もしているので、エラー発生時は表示された入力値または行番号を見てトレースできるはずです
以下手順
Alt+F8 でマクロウィンドウを表示、マクロ名を 配送表印刷範囲設定 にして、作成ボタンを押す
マクロ編集用のウィンドウが表示されるので、以下をコピーして貼り付ける
' ここから
Sub 配送表印刷範囲設定()
Dim stInput As String
Dim iNum As Integer
Dim iRow As Integer
Dim lcnt As Long
ActiveSheet.PageSetup.PrintArea = ""
On Error GoTo Err
' 毎回入力するのが面倒臭くないよう、デフォルト値を5999にする
stInput = InputBox("hoge", "値を設定する", 5999)
iNum = CInt(stInput)
' 環境によっては100万行でもよい
' 数値の入ったB列で万一抜けがあった場合を考慮し、下から上へ見ている
For lcnt = 65535 To 1 Step -1
' 一度セルの値をINT型に変換する(文字ならエラーに飛ぶ)
If Len(Cells(lcnt, 2).Value) > 0 Then
iValue = CInt(Cells(lcnt, 2).Value)
Else
GoTo continue
End If
' 指定した条件以下が見つかればそこを印刷範囲の最終行にする
' もし行末から最初に条件と一致した場合にするなら、iValue = iNumにすると良い
If iValue <= iNum Then
iRow = lcnt
Exit For
End If
continue:
Next lcnt
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(iRow, 17)).Address
Application.StatusBar = "印刷範囲、B " & iNum & " で設定しました"
'ActiveSheet.PrintPreview
Exit Sub
Err:
Call MsgBox("処理を中止しました。エラーかも 入力値:" & stInput & "、ループ:" & iValue & "行目")
Application.StatusBar = False
End Sub
'ここまで
貼り付けたらマクロ編集ウィンドウを閉じ、再びAlt+F8
「オプション」ボタンが押せるようになるので押す。
好きなショートカットを割り当てる(ここでは大文字のMを割り当て。小文字ならCtrl+という表示になる)
書きたければ説明文を書き、OKボタンでオプションウィンドウを閉じる
マクロウィンドウも閉じる
ブックを一旦保存する
あとはCtrl+Shift+Mでマクロを実行後、印刷する
Ctrl+F2で印刷プレビューを見られるので、ショートカットを活用することで作業効率が上がるでしょう。
![「エクセルの印刷範囲について」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/4/201903_54a9fc80c7f41/M.jpg)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル2013「次のページ数に合わせて印刷」が小さすぎる 9 2023/03/28 10:18
- Excel(エクセル) エクセルの印刷範囲をページ単位で可変にする方法 3 2022/05/23 13:04
- Excel(エクセル) OFFSET関数を使用した印刷範囲の自動変更について 2 2022/06/02 12:11
- Excel(エクセル) エクセルシートのPDFでの保存 2 2022/09/06 13:05
- Excel(エクセル) エクセルVBAで複数のシート印刷設定 1 2022/09/07 12:03
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Excel(エクセル) VBA 1 2023/04/27 13:37
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- 事務・総務 郵便払込取扱票への記入揺れ 1 2022/03/26 22:54
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
エクセルで同じ名前ごとの合計...
-
エクセルで一部除外した数字を...
-
エクセルで列内の同じIDの商品...
-
エクセルVBA Unionはなぜ遅い?
-
ExcelVBA:列方向の並び替え O...
-
エクセルマクロでA欄に値があ...
-
パソコンで簡易検索を作るには
-
エクセルの関数SUBSTITUTEを、...
-
エクセルの関数についての質問...
-
Excel 複数キーワードの確認方法
-
セルの入力制限(半角数字と半...
-
エクセル マクロで列を連続し...
-
桁数が混在する並び替えの方法
-
Excelで数値→文字列変換で指数...
-
テキストボックス内の文字のふ...
-
Excelで行ごとコピー、同じ行を...
-
エクセルでグラフタイトルが折...
-
塗りつぶしの色をコピーするには
-
Excelの関数について、特定の文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
エクセルで同じ名前ごとの合計...
-
桁数が混在する並び替えの方法
-
エクセルVBA Unionはなぜ遅い?
-
エクセルの関数SUBSTITUTEを、...
-
エクセルで一部除外した数字を...
-
エクセルで列内の同じIDの商品...
-
EXCEL VBA 指定範囲内で特定の...
-
Excelで自動的に並べ替えなんて...
-
エクセル マクロで列を連続し...
-
エクセルで2列を検索し2列とも...
-
エクセル VLOOKUPが反映されない
-
エクセルvba 一つ上の行を指定...
-
ExcelVBA:列方向の並び替え O...
-
Excelで1列の数字の内、ある行...
-
エクセルマクロでA欄に値があ...
-
オートフィルについて(急ぎ!)
-
VBAでFormula関数を使ってVlook...
-
エクセルの関数についての質問...
-
EXCEL 指定した曜日に番号を振...
おすすめ情報