質問: 選択したデータだけ印刷するには? 例えばシート1のb列に顧客番号・c列に住所・d列に氏名のデータが入っていて、選択した顧客番号のデータのみを、タッグシールに印刷したいのです。 印刷したいデータの選択は、a列に顧客番号の横にチェックを直接入力します。 タッグシールはa4に10枚あります。 初心者で、本を読んでみたりしたのですが、どうしても分かりません。 具体的に教えていただくと助かります。よろしくおねがいします。
回答: 良く見ると、項目の並びは質問と違うが辛抱してください。こちらの方が常識的では。 (1)下記のプログラムの終わり近くに「stop」の行があるがそのままにして、(2)の列幅等が固まるまで、1ページだけ、しばらく試し打ちで実行のこと。 本番ではstopの前に「’」(アポストロフィ)を入れると、無いものと 同じになる(注釈化)。 シートのミシン線に薄く鉛筆で線を入れa4コピーを10枚ぐらい取り、そのコピー用紙で試し印刷すること。 (2)列幅・行高・フォントサイズを適当にして、2列6枚が上手く収まる (ミシン線を跨がない)が出来るかどうか、試行錯誤すること。必ず出来るかどうか私は確信が持てないですが、修正が必要な時、新しい要望が出たとき、プログラムのどこを、どのように直せば良いか、判るでしょうか。出来るだけ初等的なコーヂングにしていますけれど。 (4)毎回試し打ちする時、sheet2は手動でクリアして実行すること。 (本番ではプログラムでクリアします) (5)何列のシールか何人分のシールかなど書いてないので、手探りに なっています。直し方が判るでしょうか。 難しいと思えば、フリーソフトの利用をお勧めします。 sub test01() ' sheet1でa列出状サイン、b列社名、c列郵便番号、d列住所1、e列住所2 ' f列顧客番号とする。 dim sh1 as worksheet '会社住所禄 dim sh2 as worksheet 'シール印刷画面 set sh1 = worksheets("sheet1") set sh2 = worksheets("sheet2") d = sh1.range("a1").currentregion.rows.count ' sh2.cells.clear i = 0 '----------シール1枚分項目セット p05: for j = 1 to 6 * 7 step 7 '6人x2列でシール1枚とする p01: i = i + 1 '次の行へ if sh1.cells(i, 1) <> 1 then goto p02 'サイン1は印刷しない if i > d then goto owari '最下行を過ぎたか goto p01 p02: '--左列 sh2.cells(j + 1, 2) = sh1.cells(i, 3) '郵便番号 sh2.cells(j + 2, 3) = sh1.cells(i, 4) '住所1 sh2.cells(j + 3, 3) = sh1.cells(i, 5) '住所2 sh2.cells(j + 4, 4) = sh1.cells(i, 2) & "御中" '会社名 sh2.cells(j + 5, 5) = sh1.cells(i, 6) '顧客番号 p03: i = i + 1 if sh1.cells(i, 1) <> 1 then goto p04 'サイン1は印刷しない if i > d then goto owari '最下行を過ぎたか goto p03 p04: '--右列 sh2.cells(j + 1, 8 + 2) = sh1.cells(i, 3) '郵便番号 sh2.cells(j + 2, 8 + 3) = sh1.cells(i, 4) '住所1 sh2.cells(j + 3, 8 + 3) = sh1.cells(i, 5) '住所2 sh2.cells(j + 4, 8 + 4) = sh1.cells(i, 2) & "御中" '会社名 sh2.cells(j + 5, 8 + 5) = sh1.cells(i, 6) '顧客番号 next j sh2.range("a1:m50").printout stop 'シール印刷 sh2.range("a1:m50").clear '印刷エリアクリア goto p05 '次のシール印刷準備へ '---------------- owari: sh2.range("a1:m50").printout ' 最終分印刷 end sub ok-web横の文字数制限のため無理やり改行されている「コメント」の部分は、1行に直して下さいね。