• 締切済み

エクセルで差し込み印刷(欠番を飛ばして印刷したい)

イメージは画像を参照ください。 ------------------------- シート1には社員番号をはじめ個人情報リストがあります。 ------------------------- シート2にそれを差し込み印刷するためのフォームを作りました。 赤い文字のセルに番号を入れると、名前や部署が自動表示されるようにしてあります。 そしてプリントエリア外に、印刷ボタンを作成しました。 「自」、「至」 それぞれに数字を入れるとその範囲をまとめて印刷するようにします。 ------------------------- そして以下のように作りました。 Sub 個人通知票印刷() Range("社員番号") = Range("自") Do While Range("社員番号") <= Range("至") Sheets("個人票").PrintOut Range("社員番号") = Range("社員番号") Loop End Sub ------------------------- 本題ですが質問は以下の通りです。 社員番号は欠番もあるので、 自1 至5 と入れると 社員番号4も#N/Aというデータでプリントされてしまいます。 たとえばリストに社員番号がない場合 (印刷範囲内に含まれる欠番)は プリントアウトしないようにしたいのですが 可能でしょうか。 尚、初心者なので何とか作ったものの これ以上どうしていいか行き詰ってしまいました。 ワードで差し込み印刷すれば・・・とも思ったのですが 可能なら何とか完成させたいです。 質問内容が十分かどうかも 分からないため、このほかにも必要な情報がありましたら ご指摘ください。 どうぞよろしくお願致します。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問の意図が良くわからない・ >シート2にそれを差し込み印刷するためのフォームを作りました。 赤い文字のセルに番号を入れると、名前や部署が自動表示されるようにしてあります。 など本題と関係ないのでは。 ーーー こういうことか? シーとの連続範囲に社員番号1,2,4,5の行があったとき、 4の行を飛ばして Sheets("個人票").PrintOut はもちろん シート.Range(・・・).Printoutはできない。 PrintOutを発行すると印刷後改ページしてしまう。 VBAには印刷しても改行せず、印刷用紙の次行に位置づけるメソッドなどあれば良いのにない。旧BASIC時代はPrint#文の 終わりで,か;でそれらの区別の指示が出来たと思うが、エクセルVBAではない。だからデータの第1-2行をPrintOut,第4行をPrintOutしても、意図したものにならない。 == 別シートなりに、社員番号1,2,5行をコピー貼り付けしたデータシートを新たに作り、そのシートをPrintOutしないといけない。 この経験は、エクセル印刷(VBAでも操作でも)を始めるとすぐ気がつくものと思うが。 ーー ちなみに CTRLを押してA1:D6とA10:D13を範囲指定し、印刷で 選択した部分を択んで印刷しても、A1:D6のページとA10:D13のページは別になってしまった。

hawaii001
質問者

お礼

おっしゃるとおり、社員番号1~5を範囲指定としたとき たとえば4が欠番になっている場合は、 1,2,3,5の社員の情報だけが出てくればよいということです。 このあといろいろ試しましたが、よくわからず 結局、社員番号の左に印刷用に連続した番号を振り、 範囲指定する方法にしました。 いろいろありがとうございました。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

よく内容の分らない質問です ------------------------- そして以下のように作りました。 Sub 個人通知票印刷() Range("社員番号") = Range("自") Do While Range("社員番号") <= Range("至") Sheets("個人票").PrintOut Range("社員番号") = Range("社員番号") Loop End Sub ------------------------- これで本当に処理されますか? もろもろ、ありますが面倒なので 結局は赤い数字が変化すればよいだけと解釈しました 質問者さん的に書くとこんな感じですかね Sub test() Dim i For i = Range(開始ページ).Value To Range(終了ページ).Value If Range(表の社員番号列 & i + 1).Value = i Then Range(赤の数字).Value = i Next End Sub たったこれだけです まあ、解釈が合ってればの話ですがね 自分で見ても解かり難い シート名やセルアドレスは明確にね できればExcelやWindowsのバージョンも 回答しにくいので

hawaii001
質問者

お礼

印刷用の番号を振って無事に印刷できるようになりました。 1日じゃ理解で理解しようと始めましたが無理ですね。 次回はおとなしくワード差し込み印刷機能に戻ります。。。 ありがとうございます。

hawaii001
質問者

補足

バージョンは Office excel 2003 SP3 WindowsXP pro です。 実際はシートが2枚に分かれているが イメージ画像を作るために1枚に並べただけで シート名は シート1→台帳 シート2→個人票 としています。 シート1には、差し込みする参照元になるデータが 入っています。 シート2には「社員情報印刷フォーム」と囲ったプリントエリア、 またプリントエリア外に差し込み印刷するための 範囲指定(自・至)と印刷を実行するボタン を作りました。 「自」と「至」右のセルに番号を入れて 印刷ボタンを押すと プリントされる仕組みです。 画像にある 「自」の右の欄に1 「至」の右の欄に5 と入力して 印刷ボタンをクリックすると 社員番号の1~5のデータが 社員情報印刷フォームに差し込まれて 1枚ずつ印刷されます。 しかし、社員番号3は欠番になっているので 本来ならプリントしたくないのですが 名前・部署が#N/A差し込まれて 印刷されてきます。 (1点間違えていました。 質問には社員番号4も#N/Aというデータでプリントされてしまいます。 と書きましたが正しくは社員番号3の間違いです) 何をどのように聞いたらよいかうまくかけなくてすみません。 社員番号のほかに通し番号でも振って印刷しようかな・・・なんて思ってます。

関連するQ&A