- ベストアンサー
Exelで簡単に差し込み印刷したい
- 業務でエクセルを使用して差し込の証明書を簡単に自動印刷したいです。量が多いためVBAを使用して自動印刷する方法を調べています。
- 証明書文書には複数の事業所番号、事業所名、代表者名を差し込む必要があります。印刷範囲も設定する必要があります。
- 作成したVBAコードにエラーが出ているため、どこが問題かわからない状況です。初心者なので解説してもらいたいです。簡単な方法があれば教えてほしいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>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つ違う印刷をするプログラムが見つからなかったので継ぎ足しで「こうすればいいかな」と初心者なりにやっておりました。 『至』ばかりに目がいって『自』をプラスすればいいことに気づきませんでした。 とても助かりました。ありがとうございました。