トップ > 汎用コード > 値を変更しながらの印刷

値を変更しながらの連続印刷マクロ印刷   2010.06.09   更新:2022.02.04

指定したセルに、数字を順番に自動設定し、まとめて連続印刷するマクロです。

あるセルに出席番号を入力したら、その生徒データを表示するシートを作成したが、40人の出席番号を順に入力して、その都度印刷ボタンを押すのは面倒。そのような時に使用します。

[値を変更しながら連続PDF出力]はこちら
[値を変更しながら連続シート出力]はこちら



※マクロ実行前に「印刷範囲」や「プリンタ」の設定等を行っておいてください

サンプルファイル

●サンプルファイル ダウンロード INDEX関数を用いた名簿とマクロのサンプルです

 ご要望が多くあるため、サンプルファイルに次のマクロも追加しました 2022.02.04
 ・開始番号・終了番号をインプットボックスで指定しての印刷
 ・名簿のデータ数にあわせた全印刷


【お薦め】マクロ・プロシージャを管理する無料のツール!
 Excelマクロ管理ツール

サンプルコード

コードの貼り付け場所   VBAコードをカラーで印刷・Web掲載するためのツールはこちら

Sub Print_Out_1() 'セルに値を設定しながら連続印刷する。印刷対象:アクティブシート
    '定数
    Const conStart As Long = 1       '開始番号
    Const conEnd   As Long = 40      '終了番号
    Const conStep  As Long = 1       '間隔
    Const conCell  As String = "A1"  'セル番地
    '変数
    Dim i As Long
    With Application
        .ScreenUpdating = False
        With .ActiveSheet
            For i = conStart To conEnd Step conStep
                .Range(conCell).Value = i
                .PrintOut
            Next
        End With
        .ScreenUpdating = True
    End With
End Sub

定数を変更することで、様々な状況に対応出来ます。
・「開始番号」 1番から40番までの印刷だと、1番の事です。
・「終了番号」 1番から40番までの印刷だと、40番の事です。
・「間隔」 通常は「1」ですが、一つ飛ばしにする場合は「2」にします。
・「セル番地」 値を変更するセルの番地です。

書籍紹介本を執筆しました

2024年1月20日に販売!
「教師のExcel ~校務(個人業務+チーム業務)カイゼンのためのデジタルリテラシー~」
基本の学びなおしから校務をサポートするシステム作りまで(技術評論社)

教員みんなができる「チーム業務」のポイントを丁寧にわかりやすく解説しています。また「個人業務」を更に効率化するための学び直しと応用テクニックを解説しています。
この書籍の活用してもらうことで、先生方が児童・生徒に向き合う時間を、更に確保できることを願っています!
■ 詳細(技術評論社)   ■ 購入:amazon


サンプルコード開始と終了にセルの値を指定する

開始と終了にセルの値を指定したい場合は次のコードを使用します。
次のサンプルコードは、セル[C1]の値を開始値、セル[D1]の値を終了値としています。
値を変更するセルは[A1]です。

Sub Print_Out_1_2() 'セルに値を設定しながら連続印刷する 開始と終了をセルで指定する

    '定数
    Const conStrR As String = "C1" '開始 セル番地
    Const conEndR As String = "D1" '終了 セル番地
    Const conStep As Long = 1      '間隔
    Const conCell As String = "A1" '値変更セル番地
    
    '変数
    Dim i As Long
    
    With Application
        .ScreenUpdating = False
        With .ActiveSheet
            For i = .Range(conStrR) To .Range(conEndR) Step conStep
                .Range(conCell).Value = i
                .PrintOut
            Next
        End With
        .ScreenUpdating = True
    End With
End Sub

定数を変更することで、様々な状況に対応出来ます。
・「開始 セル番地」 開始する番号が入力されているセル番地です。
・「終了 セル番地」 終了する番号が入力されているセル番地です。
・「間隔」 通常は「1」ですが、一つ飛ばしにする場合は「2」にします。
・「値変更セル番地」 値を変更するセルの番地です。


書籍紹介

知りたいがすぐわかる! やりたいがすぐできる!
「Excel VBA 逆引きで学ぶ ユーザーフォーム&コントロール」(Kindle版)
ユーザーフォームを扱えると、VBAでできることが大きく広がります!
本書では、知りたいこと、やりたいことから、逆引きで学びを深められます。
※ 第1章~5章まで公開しています
■ 詳細   ■ 購入:amazon


サンプルコード待機時間をつくる

ワークシート関数を多く使用している場合、処理に時間がかかり上手く印刷されない場合があります。そのような時は、処理の中に待機時間をつくります。待機時間をつくるをコードは次のようになります。

'標準モジュールの先頭に記述します。
#If VBA7 Then 'Excel2010以上の場合
    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else 'Excel2007以下の場合
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

Sub Print_Out_1_3() 'セルに値を設定しながら印刷する(待ち時間あり) '定数 Const conStart As Long = 1 '開始番号 Const conEnd As Long = 40 '終了番号 Const conStep As Long = 1 '間隔 Const conCell As String = "A1" 'セル番地 Const conWait As Long = 100 '待機時間 '変数 Dim i As Long With Application .ScreenUpdating = False With .ActiveSheet.Range(conCell) For i = conStart To conEnd Step conStep .Value = i Call Sleep(conWait) ActiveSheet.PrintOut Next End With .ScreenUpdating = True End With End Sub

・「開始番号」 1番から40番までの印刷だと、1番の事です。
・「終了番号」 1番から40番までの印刷だと、40番の事です。
・「間隔」 通常は「1」ですが、一つ飛ばしにする場合は「2」にします。
・「セル番地」 値を変更するセルの番地です。
・「待機時間」 関数の動きが重たい場合は、この値を増やして下さい。1000=1秒


ラベル等 印刷のヒント1ページに複数ラベル等を連番で表示

あるセルが「1」になったら、ラベル等が 1~6 まで表示され、「2」になったら 7~12 まで表示されるようにしたい。といったような要望を時々いただきます。



そのような場合は、マクロとワークシート関数と組み合わせます。


ラベル等の最初の数値を表示させるセルに次の数式を入力します。
=IF($A$1="","",($A$1-1)*6+1)
「$A$1」は番号を入力するセルになります。
赤字の部分は、一度に表示させたいラベル等の数によって変更します。

次の数値を表示させるセルに、次の数式を入力します。
=IF($C$3="","",$C$3+1)
この「$C$3」は最初の数値が表示されるセルになります。
+1 の部分は最初の数値からプラスしたい数です。
他の連続番号を表示したいセルにも、同様の数式を入力します。

このように設定することで、入力するセルの数値が変わるごとに、連続番号をまとめて表示させることができます。


ページトップへ戻る

Excel 汎用コード

Copyright(C) 2009- 坂江 保 All Rights Reserved.