プロが教えるわが家の防犯対策術!

VBA初心者です。以下のように他サイトを参考にしてプログラムを作成しました。
Sub 作業日報一括印刷()
'
' Macro3 Macro
'

If MsgBox("すべての作業日報が印刷されます。本当に印刷しますか?", vbYesNo, "確認") = vbNo Then
Exit Sub

End If


Range("G1").Select
ActiveCell.FormulaR1C1 = "1"
If Range("s2") = 0 Then MsgBox "印刷対象がありません。"
If Range("s2") = 0 Then Exit Sub

Exit Sub

If Range("s2") > 0 Then

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End If
Range("G1").Select
ActiveCell.FormulaR1C1 = "2"
If Range("s2") = 0 Then Exit Sub

If Range("s2") > 0 Then

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End If


・~省略~

Range("G1").Select
ActiveCell.FormulaR1C1 = "100"
If Range("s2") = 0 Then Exit Sub

If Range("s2") > 0 Then

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End If


End Sub

上記コードを簡素化できますでしょうか?また途中で停止出来るようにしたいです。
よろしくお願いします。

A 回答 (1件)

提示のコードで正しく作動していますかね??



一応、想像で編集してみました。
Sub 作業日報一括印刷()
For i = 1 To 100
Range("G1").Value = i & ""
’ i & ""はあえて数値も文字列にしていますが、本当は i  だけで数値が正解?
If Range("S2") .Value <> 0 Then
 SelectedSheets.PrintPreview IgnorePrintAreas:=False
Next
End Sub

G1セルに1から100まで順に入れて
結果を印刷プレビューします。

>途中で停止出来るようにしたいです
なので
PrintOut を PrintPreview
にしてあります。

それと、コードを張り付けるときに
” が &quot; になったりしていますが、大丈夫でしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!