>Range("f2") = Range("自1")
この『Range("自1")』の『自1』というのは何ですか?
「名前定義」を使ってセル位置を定義しているのですか?
そしてそれはAA2のセルの事でしょうか?
自1がAA2、自2がAB2、..のセルの事だとして、素直に修正するなら
Sub 証明書印刷()
With ActiveSheet
.Range("f2") = .Range("AA2")
.Range("n2") = .Range("AB2")
.Range("v2") = .Range("AC2")
Do While .Range("f2") <= .Range("AD2") And .Range("n2") <= .Range("AE2") And .Range("v2") <= .Range("AF2")
.PrintOut preview:=True
.Range("f2") = .Range("f2") + 3
.Range("n2") = .Range("n2") + 3
.Range("v2") = .Range("v2") + 3
Loop
End With
End Sub
こんな感じです。
Do While条件で「.Range("f2") <= .Range("AD2")」かつ
「.Range("n2") <= .Range("AE2")」かつ
「.Range("v2") <= .Range("AF2")」
という条件なら、And で結びます。
VBAコードが横に長くなって見にくい場合、折り返して記述できます。上記例なら
Do While .Range("f2").Value <= .Range("AD2").Value And _
.Range("n2").Value <= .Range("AE2").Value And _
.Range("v2").Value <= .Range("AF2").Value
xxxxxxxx _
yyyyyyyy _
zzzzzzzz
..というように行末に『 _』半角スペースと半角アンダーバーを付けます。
そもそも、セルF2とN2とV2の印刷番号についての関係が、常に連続数値の関係なら、
F2セルの『自』から『至』だけを指定すれば済むような気もしますが。
Sub try()
Dim i As Long
With ActiveSheet
For i = .Range("AA2").Value To .Range("AD2").Value Step 3
.Range("f2").Value = i
.Range("n2").Value = i + 1
.Range("v2").Value = i + 2
.PrintOut preview:=True
Next
End With
End Sub
#印刷は preview:=True を削除またはコメントアウト。
#N2セルに =F2+1 V2セルに =N2+1 という数式をセットしておけば変更はF2セルだけ。
お礼
お礼が遅くなってすみません。 『Range("自1")』の『自1』はend-uさんのいうとおり「名前定義」を使ってセル位置を定義しています。 本当に自分がしたかったのは『自』から『至』だけを指定して印刷をしたかったのですが、1枚の紙に3つ違う印刷をするプログラムが見つからなかったので継ぎ足しで「こうすればいいかな」と初心者なりにやっておりました。 『至』ばかりに目がいって『自』をプラスすればいいことに気づきませんでした。 とても助かりました。ありがとうございました。