質問: 教えてエクセル、vbe a4用紙に地域の金券(100円×20枚=2000円)をエクセルで作っていますが、1000円毎に通し番号の抽選券を付けようと思っています。印刷枚数が多いのでプリントアウト時に自動的に通し番号を付けようとvbeで試しましたが、パソコン初心者の為失敗します。 宜しければコマンドボタン配置からの流れを教え下さい、 抽選通し番号配置セルは、a1とa5です。よろしくお願いします。 尚、プリントアウト1枚目は、通し番号1と2、2枚目は通し番号3と4となり印刷枚数140枚の予定で最終通し番号は、280となります。
回答: こんにちは。 >印刷範囲設定のエラーが出ます。 印刷範囲は、ここでの話の中では、a1:c8 までだったと思いますが、 ページレイアウト-印刷範囲は、これに関わらず、基本的なことですから、かならず入れるようにしてください。 失礼ですが、その後の説明しても、説明から実際に形づけるのは難しいと思いましたしので、ファイルをアップしました。そちらを御覧ください。 http://bit.ly/28mw84l 16/06/21 08:46:28 7日 までです。 パスワードは、ここのアドレスの.htmlの前の7桁の番号です。 ダウンロードした後、右クリックして、プロパティで、「ブロック解除」して、「ok」を押してください。 ここの掲示板で書いた内容とは、違う部分があります。また、ここの掲示板で書かれた私のマクロは、重大なミスがありましたので、訂正版を載せておきます。返って、使わなくてよかったと思います。急遽作りなおしましたので、不備があるかもしれません。試験的に印刷してから試してください。 画像をみると、オートシェイプが置かれて、その中に数字を入れるようになっているようです。ただ、その書式は、分かりませんので、こちらの想像で作らせていただきました。なお、私自身、最初想定していたものよりも、難しい内容だと感じました。 余計な話ですが、このチケットにオリジナル画像やパターンをつけると、偽造防止になるのではないかと思いました。 '// private declare sub sleep lib "kernel32.dll" (byval dwmilliseconds as long) sub printmacro() dim i as long dim istart as long, iend as long const prev as boolean = false 'true =プレビュー istart = 1 '最初の番号 iend = 140 '最後のページ on error goto errhandler application.enablecancelkey = xlerrorhandler with activesheet if .pagesetup.printarea = "" then msgbox "このマクロは、印刷範囲を設定していないと、実行できません。", vbexclamation exit sub end if for i = istart to iend call numberinshape(i) .printout , , , prev sleep 500 doevents 'この2行を割り込み中止を入れやすくさせるためです。 next i end with application.enablecancelkey = xlinterrupt exit sub errhandler: msgbox i & " :中途で止まりました。" application.enablecancelkey = xlinterrupt end sub sub numberinshape(byval i as long) dim shp as shape dim t1 as string dim t2 as string t1 = cstr((i - 1) * 2 + 1) t2 = cstr(i * 2) for each shp in activesheet.shapes if lcase(typename(shp.drawingobject)) = "rectangle" then if shp.topleftcell.address(0, 0) = "a1" then 'オートシェイプの位置 a1 shp.drawingobject.text = t1 elseif shp.topleftcell.address(0, 0) = "a5" then 'オートシェイプの位置 a5 shp.drawingobject.text = t2 end if end if next shp end sub '//