重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【終了しました】教えて!gooアプリ版

Sub Print_Out_1()
'セルに値を設定しながら連続印刷する。印刷対象:アクティブシート

nRet = MsgBox("印刷を開始してもよろしいですか?", vbOKCancel, "メディカルG")

If nRet = vbOK Then



ActiveSheet.Unprotect Password:="0630"
ActiveSheet.PageSetup.PrintArea = "B11:O30"


Dim conStart As Long
Dim conEnd As Long
Dim conStep As Long
Dim conCell As String
conStart = Range("K7") '開始番号
conEnd = Range("K6") '終了番号
conStep = Range("K7") '間隔
conCell = "K7" 'セル番地
'変数
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
MsgBox "印刷が完了しました。"

ActiveSheet.PageSetup.PrintArea = False

ActiveSheet.Protect Password:="0630"

End If
End Sub


上記のコードで印刷枚数を入力すると何故か4倍の印刷枚数がでます。
どうやって修正したらいいのでしょうか?
教えてください。

A 回答 (1件)

こんばんは



>上記のコードで印刷枚数を入力すると~~
ご提示のコードには「印刷枚数を入力」するらしきところが見当たりませんけれど、どこで「入力」しているのでしょうか???


気になったのは、変数の conStart、conStep、conCellが(多分意味は違うだろうに)みな同じ「K7」セルの値になっていること。
普通に考えれば、なんかおかしいですけれど。
(私には何が正しいのかわかりませんけれど…)

実際にプリントされる回数(シートが1枚に納まるなら枚数と同値)は、
 >For i = conStart To conEnd Step conStep
で決っていると思われます。
回数に換算するなら、conStart <= conEnd が成り立つとして
 Int(conEnd - conStart )/conStep) + 1
回になると考えられます。

1シートの出力が複数枚になる場合は、「総枚数=出力回数×1シートの出力枚数」となると想像されます。
    • good
    • 0

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