ActiveSheet.PrintOut

値を変更しながらの印刷

 とあるセルに出席番号を入力したら、その生徒のデータを表示するシートを作成したが、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 lngI As Long
    With Application
        .ScreenUpdating = False
        With .ActiveSheet.Range(conCell)
            For lngI = conStart To conEnd Step conStep
                .Value = lngI
                ActiveSheet.PrintOut
            Next
        End With
        .ScreenUpdating = True
    End With
End Sub

定数を変更することで、様々な状況に対応出来ます。

 ・「開始番号」・・・1番から40番までの印刷だと、1番の事です。
 ・「終了番号」・・・1番から40番までの印刷だと、40番の事です。
 ・「間   隔」・・・通常は「1」ですが、一つ飛ばしにする場合は「2」にします。
 ・「セル番地」・・・値を変更するセルの番地です。

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

'Declare~は標準モジュールの先頭に記述します。
#If VBA7 And Win64 Then      'VBAのVersion7で、64bitマシンの場合
    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else 'それ以外
    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 lngI As Long

    With Application
        .ScreenUpdating = False
        With .ActiveSheet.Range(conCell)
            For lngI = conStart To conEnd Step conStep
                .Value = lngI
                Call Sleep(conWait)
                ActiveSheet.PrintOut
            Next
        End With
        .ScreenUpdating = True
    End With
End Sub

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

Excel Tips for Teachers

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