■社内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 件のコメント:
コメントを投稿