質問: vbaについての質問です。 画像の様な1枚の用紙に5ラベル印刷できるシートと、ラベルに項目を差し込む vbaについての質問です。 画像の様な1枚の用紙に5ラベル印刷できるシートと、ラベルに項目を差し込む為のマスターシートがあります。 リストに入力した項目を指定のラベル枚数、印刷をしたいです。 仮に印刷欄に8ラベルの指定があった場合、その項目を5ラベルに差し込み、一度印刷、次に残りの3ラベル差し込み、印刷。といったプログラムを組みたいのですが、よくわかりません。 ご教授願いたいです。宜しくお願いします。
回答: こんばんは、 どの様に回答すれば良いのかわかりませんが、 掲示の表において、なさりたい事を条件分岐で考えると下記のような流れになると思います。(一例です) 多分このままでも処理できると思いますが、ステップ実行などで処理の流れを確認してください。基本的にベタ書きなので分かると思います。 3行だけなので.value=.valueですが、offsetなどに書き替えても良いかも知れません。 .printpreview としていますので即プリントする場合は.printoutなどとして場合によっては、他の制御を加えた方が良いかも知れません。 表示のシートで実行されます。with activesheet シートは明示した方が良いと思います。。 sub a() dim i as long, ii as long dim n as long: n = 0 dim rg as range with activesheet set rg = .range("b3,b5:b6,b11,b13:b14,b19,b21:b23,b27,b29:b30,b35,b37:b38") rg.clearcontents for i = 4 to 6 if .cells(i, 9).value <> "" and .cells(i, 9).value > 0 then for ii = 1 to .cells(i, 9).value if .cells(3 + n, 2).value <> "" or n > 32 then .printpreview ' .printout rg.clearcontents n = 0 .cells(3 + n, 2).value = .cells(i, 6).value .cells(5 + n, 2).value = .cells(i, 7).value .cells(6 + n, 2).value = .cells(i, 8).value else .cells(3 + n, 2).value = .cells(i, 6).value .cells(5 + n, 2).value = .cells(i, 7).value .cells(6 + n, 2).value = .cells(i, 8).value end if if ii < .cells(i, 9).value then n = n + 8 next end if if n <= 32 then n = n + 8 else n = 0 end if next .printpreview ' .printout end with end sub