質問: .range("v2") + 3 loop end with end sub ---------------------------------------------- というのを自分なりに調べて作りましたがエラーがでてどこが悪いのかわからなくなっています。 何分初心者なので、どこが悪いのか解説してもらえると助かります。 あと、こうすればもっと簡単にできますよ。というのでも結構です。 よろしくお願いいたします。
回答: >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セルだけ。