[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『連続印刷時不要ページを飛ばす』(gishi)
お世話になります。
VBAで連続印刷を行いたいと思います。
For i = 1 To 30
.Range("F1").Value = i
.PrintOut
単純に30枚印刷するのであれば以上でいいかと思いますが、30ページの中にはデータが入っておらず、印刷が不要となるページもあります。
ページは白紙ではなく、定形の書式が用意されており、以下のような条件で印刷することになります。
A B C D E F
1
2 日付 名前 品目
3
4
イメージとしては上の通りとなり、1ページ10件記載出来るようになっています。
印刷する際は、2列は見出し行となり不変です。
F1に入れる1−30の数字は整理番号で、別シートからデータを引用する際使用します(30件の引用元があるということでこれの数は変わりません。)
C3D3にはF1に入れた数字を基にVlookで別シートからデータを持ってきて
C3にデータが入ったらB3に当日の日付を出力させ
B3にデータがある場合はA1に1を表示させる
ということを関数でやってあります。
2ページ目以降にも同様の関数を入れページ数の取得が出来るようにしてあります。
1件ずつ印刷する場合には問題ないのですが、1から30を連続で印刷する時データがないページを処理するにはどのようにすればいいのでしょうか?
Dim i , Ed As Integer
For i = 1 To 30
.Range("F1").Value = i
.Range("A1").Value = Ed
if ed = 0 then
i = i+1
end if
.PrintOut from:=1, To:=Ed, preview:=True
next i
こんなコードで作ったと思うのですが、元のデータが職場にあるため、参照できませんがよろしくお願いいたします。
< 使用 Excel:unknown、使用 OS:unknown >
印刷するページが、20ページまでの場合は、A1は20になるのでしょうか。
そうであれば。
if ed <> 0 then
.PrintOut from:=1, To:=Ed, preview:=True
end if
(マナ) 2018/12/30(日) 16:33
早速の返信ありがとうございます。
>印刷するページが、20ページまでの場合は、A1は20になるのでしょうか。
関数的にはそういう設定になっていますが、多くても5ページ程度だと思います。
コードを見るとif文で回避するのではなく、if文で実行するということなっていますが
この違いは何なんでしょうか?
何にせよこれで思った動きが出来るのであればすっきりしたコードですので、
職場にて試してみます。
(gishi) 2018/12/30(日) 22:27
「回避する」場合は、こうでしょうか
if ed = 0 then '何もしない else .PrintOut from:=1, To:=Ed, preview:=True end if
それよりも、
for〜nextの中で
>i = i+1
のようにすると、混乱するのでやめたほうがよいです。
(マナ) 2018/12/31(月) 09:49
色々試行錯誤した結果
Dim i , Ed As Integer
For i = 1 To 30
.Range("F1").Value = i
.Range("A1").Value = Ed
if ed = 0 then GoTo L1
.PrintOut from:=1, To:=Ed, preview:=True
L1:
next i
こんなコードで自己解決しました。
ありがとうございました。
(gishi) 2019/01/01(火) 14:06
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.