■社内DXの依頼内容
ブックの中でB1セル以下に値があるシートのみを印刷したい
■社内DXの条件
・1シート目は印刷対象外としたい
・2シート目以降でB1セル以降に値があるシートを印刷したい
・印刷するシートはマクロが入っているブック内にある
■諸元
・2シート目から全シートを周回する
・B2セル以降に値があれば配列にシート名を格納する
・シート名が入った配列を対象として印刷プレビューする
■作成方法
1.2シート目からデータのあるファイルを準備する。
2.実際にマクロを書いていく
Sub Sample()
Dim st() As String '/--シート名を格納する配列--/'
Dim i As Integer '/--シート周回カウンタ--/'
Dim m As Integer '/--最大シート数--/'
Dim c As Integer '/--配列用カウンタ--/'
Dim y As Long '/--行数を格納--/'
'/--全シート数を入れる--/'
m = Worksheets.Count
'/--配列は0スタートなので+1したときに0になるようカウンタは-1からスタート--/'
c = -1
For i = 2 To m
y = Sheets(i).Cells(Rows.Count, 2).End(xlUp).Row
If y > 1 Then
c = c + 1
ReDim Preserve st(c)
'/--シート名を配列に格納する--/'
st(c) = Sheets(i).Name
End If
Next i
'/--配列に格納したシート名のみを印刷プレビューする--/'
Sheets(st).PrintPreview
End Sub
3.マクロ処理結果
2シート目、4シート目、6シート目の印刷プレビュー画面が表示されます。
■マクロ解説
1.複数シートを印刷する(今回は印刷プレビュー)
Sheets(配列名).PrintPreview
st(0)="値あり1"
st(1)="値あり2"
st(2)="値あり3"
という配列があったととして、
Sheets(st).PrintPreview
とすると、中身は
Sheets(Array("値あり1","値あり2","値あり3")).PrintPreview
と同義となるので、シート「値あり1」、シート「値あり2」、シート「値あり3」が選択された状態で印刷プレビューがかかる
↓よろしければクリックをお願いします!
■社内DX案件紹介
【社内DX案件紹介】データの期間によってレコードを分割しファイル出力する


0 件のコメント:
コメントを投稿