VBA Generic code

値を変更しながらの印刷

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

サンプルコード

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.Range(conCell)
            For i = conStart To conEnd Step conStep
                .Value = i
                ActiveSheet.PrintOut
            Next
        End With
        .ScreenUpdating = True
    End With
End Sub

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

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

'標準モジュールの先頭に記述します。
#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_2() 'セルに値を設定しながら印刷する(待ち時間あり) '定数 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秒

ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.