2023年3月2日木曜日

【社内DX案件紹介】値の入っているシートのみ印刷する

 ■社内DXの依頼内容

ブックの中でB1セル以下に値があるシートのみを印刷したい


■社内DXの条件

・1シート目は印刷対象外としたい

・2シート目以降でB1セル以降に値があるシートを印刷したい

・印刷するシートはマクロが入っているブック内にある


■諸元

・2シート目から全シートを周回する

・B2セル以降に値があれば配列にシート名を格納する

・シート名が入った配列を対象として印刷プレビューする


■作成方法

1.2シート目からデータのあるファイルを準備する。

2シート目4シート目6シート目に値があるブック

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」が選択された状態で印刷プレビューがかかる


↓よろしければクリックをお願いします!



TOPページへ戻る


■社内DX案件紹介

【社内DX案件紹介】アンケートの集計-1-

【社内DX案件紹介】アンケートの集計-2-

【社内DX案件紹介】架電内容ごとの情報振り分け-1-

【社内DX案件紹介】架電内容ごとの情報振り分け-2-

【社内DX案件紹介】2つのファイルの内容を比較する

【社内DX案件紹介】封入物の重さによって印刷会社を変える

【社内DX案件紹介】データの期間によってレコードを分割しファイル出力する


■社内DXの進め方

【社内DXの進め方】ブログの目的(会社が求めるDX)

【社内DXの進め方】社内DXの推進について

【社内DXの進め方】社内DXは具体的に何をすればよいのか?

【社内DXの進め方】なぜ今Excelか?

0 件のコメント:

コメントを投稿