エクセルで楽々校務

学校現場で使えるエクセルファイルや小技の紹介をしています。掘り出し物があるかもしれません。あと、今までの実践での疑問点もつぶやきます。

VBA:印刷範囲をセル値で設定するには

私には、設定を見えるようにしておきたいという癖があって、

VBAコードを書き換えなくても印刷範囲を設定できるように、○~○ってセルに書いている値で印刷範囲を設定できるようにしてみました。

 

f:id:exeladmin:20200812112023p:plain

ポイントは、セル値をStringで定義することです。

終わりにサンプルシートを置いています。

 

【書いたコード】

Sub 印刷範囲ページ数をセル値で設定しプレビュー()

Dim sh As Worksheet
Dim pa1 As String
Dim pa2 As String
Dim i, j, c As Integer
Dim rng As Range

 On Error Resume Next


Set sh = ActiveSheet

'★A列に印刷範囲行番号を入れる================
'前の値を削除する。塗りつぶし解除
For Each rng In Range("A3:A" & Cells(Rows.Count, 1).End(xlUp).Row)
 rng.ClearContents
 rng.Interior.ColorIndex = 0 '透明
Next

j = Range(Range("D1")).Row
For i = 3 To j
 Range("A" & i).Value = i - 2
 Range("A" & i).Interior.ColorIndex = 1 '黒
Next
'★========================================

With sh.PageSetup
 c = Range(Range("D1")).Column
 Range(Cells(1, 1), Cells(2, c)).Interior.ColorIndex = 1 '黒

'★★ページ範囲変数設定
 pa1 = sh.Range("B1").Value
 pa2 = sh.Range("D1").Value
 .PrintArea = Range(pa1, pa2).Address
'---------------------------------------------
 .Zoom = False
 .FitToPagesTall = Range("F1").Value 'ページ数セル値設定
 .FitToPagesWide = 1 '横は1ページにする
 sh.PrintPreview '印刷プレビューする
End With

On Error GoTo 0

End Sub

--------------------------------------

こうすると、B1、D1のセルに書いた番地に印刷範囲をセットできました。

 

備忘録としてのサンプルシートです。

 ちょっとひらめいたので、書いてみました。

今日は朝からお日様🌞近いです・・ギラギラ💦

 

では、また(^^)/