[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エクセル セル内の連番印刷』(ナッツ)
エクセル初心者です。
エクセルの1つのセルだけを連番で印刷したいのですが、わかりません。
■例えば
列 A B 行 1 シリアル AAA1200001
と入力している場合
Bの1列「AAA1200001」を
「AAA1200002」 「AAA1200003」 . . . というように連番で1枚ずつ印刷できるようにしたいです。
過去の質問事項などを見てみましたがVBA初心者の私には理解し難く
とりあえず下記のように書いてはみましたが、動きません。
"B1"が文字列だから・・・?かもわかりませんがエラーになります。
Sub 連番()
Dim i As String, j As Integer, k As Integer
i = Range("B1").Value j = InputBox("印刷枚数を入力してください。")
For k = i To i + j - 1 Range("B1").Value = k ActiveSheet.PrintOut copies:=1 Next k End Sub
わかりづらい質問になっていると思いますが、
ご教授いただけると有難いです。
"B1"が文字列だから・・・?はもちろんそうなのですが、どのシートを印刷したいのでしょうか?
記述のマクロだと書いているA列がシリアルbナB列がAAA1200001などの文字列が入ったリストが入力されているシートをインプットボックスで指定している枚数ではなく1枚印刷するようになっています。 まず、どのシート(同じファイル内にあるのか別ファイルなのか)を印刷するのかなどもう少し具体的に書いてください (ななし)
印刷するのは同じファイル内にあるシートのものを1枚ずつ連番で印刷したいと思っています。
5枚連番で印刷かけたいときBの1列に都度必要数字を入力しその値を基準に連番で出力できるようにしたいです。
先程の値を例にすると「AAA1200001」を入力し、この値を基準に 5枚連番がほしい場合
「AAA1200002」、「AAA1200003」、「AAA1200004」、「AAA1200005」と1枚ずつ印刷
また、
「AAA1200008」を入力した場合、3枚連番でほしい場合
「AAA1200009」、「AAA1200010と1枚ずつ印刷
といった感じです。
あと、追記で申し訳ないのですが、プリンタの設定を指定することも可能ですか?
宜しくお願い申し上げます。
(ナッツ)
AAA1200001はシート名なのですか?(シート名はエクセルを開いたときに下段にでてくるタブに表示されている文字ですが) シート名だとするとファイル内にものすごい数のシートがあるのですか? もうひとつ、シリアルbフ頭3文字は必ず3文字ですか?そうでないのならB列に頭記号、C列に数字と入力させることは可能ですか? 以上教えてください。 (ななし)
番号の先頭部分(AAA12)が他の物に変わる事は無いのでしょうか? また、印刷後このセルを使って何かをする事が有りますか?
「AAA12」部分は固定で、印刷時に「AAA1200001」と成るだけで良い(後でこのセルのデータを使う事はない) と言う事なら、セルの表示形式を "AAA12"00000 としておき セル自体には 1,2,3・・・等の値のみを入れる様にしておけば 作っておられるコードがそのまま使えるのではないかと思いますが。
(HANA)
ななし様
AAA1200001はシート名ではないです。
1つのシート内に表でつくった雛型があります。その表内の1セルのみシリアルai上記のように)を入力します。印刷をかけるとインプットボックスに必要枚数を入力(指定)し、その必要枚数分セルに入力した値を連番で出力(発行)できるようにしたいです。
使用用途としては、Wordの差し込み印刷のような感じで保証書・・・のシリアル発行!?みたいな扱いができたら良いなと思っております。
シリアルbフ頭文字は4文字になります。
B列に頭記号、C列に数字と入力させることは可能ですが、B列とC列の文字間が空いてしまうので
できたらB列のみで対応できたら有難いです。
HANA様
早速やってみました。セルの表示形式を変更するやり方を教えていただき有難うございます。
しかし、インプットボックスが表示されず、印刷を押してもふつうに印刷されるだけで思うようにうごきませんでした。
やはり、インプットボックスの使い方やコードがおかしいのでしょうか。
宜しくお願い申し上げます。
最初は >エラーになります。 って事でしたが。。。
>インプットボックスが表示されず と言うのは、連番マクロを実行しても表示されない って事ですか?
>印刷を押してもふつうに印刷されるだけで この時に押した「印刷」ってのは何の事ですか?
Sub 連番() 〜 End Sub と言うコードなので メニュー等から、このコードを実行しないといけませんが。。。?
それから、エクセルのバージョンは何ですか?
(HANA)
いただいた質問についての回答ですが・・・
>エラーになります。
プログラムをいろいろいじっていて型式エラーがでてました。
>インプットボックスが表示されず
連番マクロを実行したら表示されました。
>印刷を押してもふつうに印刷されるだけで
この時に押した「印刷」は連番マクロを実行したのではなくメニューバーにある印刷を押してました。 勘違いしてました。すみません。
>エクセルのバージョンは何ですか?
エクセル2010です。
あと、すごく勘違いをしていて、いままで質問をしていたのですが 今のコードを、メニューバーにある印刷のアクティブな内容を反映して印刷できるようにするにはどうしたらよいですか。
今は、印刷されたとき2ページ作成しているのがそのまま2枚ずつ印刷されて出力されます。 2枚ページ分を両面で、また印刷するプリンタ名を選択して出したいのですが、可能ですか。
VBAで印刷ダイアログボックスを表示するコードがあったので (Application.Daialogs(xlDialogPrint).Show) これを使って表示させ印刷を通常印刷のところで設定を行い印刷ボタンで出力できたらとおもっています。印刷を設定するのは、VBAでなくてよいです。
(ナッツ)
両面印刷機能を持ったプリンタを持っていないので >2枚ページ分を両面で の部分はよく分からないですが。。。
1ページずつ印刷しているので、両面印刷は無理なんじゃないでしょうか。。。? >ActiveSheet.PrintOut copies:=1 ここが、印刷する部分ですが 一枚ずつ印刷を指定回数繰り返して居ます。
両面印刷をする場合 ・プリンタの設定を両面印刷する様に設定する ・2ページ以上にわたるデータを印刷する 時に、両面印刷になりますよね?
1ページ目を印刷して、その後2ページ目を印刷したのでは両面印刷には成りません。
2ページ目のシリアルbフ位置にも表示形式を設定して =B1+1 の式を入れておく。 そして、2ページずつ印刷すると その様に成るのかもしれないですね?
それで良ければ For k = i To i + j - 1 の iは、2ずつ上がっていくので For k = i To i + j - 1 Step 2 としてみて下さい。
インプットボックスのメッセージが >印刷枚数を入力してください。 ですが、枚数(2ページで1枚)ですか?ページ数の事でしょうか? この辺りの調整は必要に成ってきそうです。 For k = i To i + j - 1 の扱いや Range("B1").Value = k の部分 等
どうなるか、試してみてもらえますか?
(HANA)
HANA様 コメント有難うございます。
いただいたコメントを踏まえて試してみます。 わからないところがありましたら、またご質問させていただきます。 そのときは、宜しくお願い申し上げます。
(ナッツ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.