• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:印刷時に自動で連番を振りたい(1頁に2か所))

印刷時に自動で連番を振りたい(1頁に2か所)

このQ&Aのポイント
  • A4用紙に帳票を2枚作っています。印刷時、帳票に連番を自動で振りたいです。連番を振りたいセルは「D1」と「D16」です。つまり、1枚目の紙には「1」「2」、2枚目の紙には「3」「4」と印刷されるようにしたいです。
  • VBAを使って、印刷時に帳票に連番を自動で振りたいです。連番を振りたいセルは「D1」と「D16」です。実行したVBAコードにて、印刷部数を入力しても正しく印刷されません。改良方法を教えてください。
  • Excel2013を使用し、A4用紙に帳票を作成しています。印刷時に帳票に連番を自動で振りたいです。連番を振りたいセルは「D1」と「D16」です。具体的には、1枚目の紙に「1」「2」、2枚目の紙に「3」「4」と印刷されるようにしたいです。現在試しているVBAコードでは、部数の入力に関わらず正しく印刷されません。改良方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

>1回1回印刷ボタンを押さないといけないんですね。 まさか ActiveSheet.PrintPreview '<<--プレビュー画面が不要ならこの行を削除。 'ActiveSheet.PrintOut '<<--直接印刷するなら「'」を消去。 このままですか? 'ActiveSheet.PrintPreview '<<--プレビュー画面が不要ならこの行を削除。 ActiveSheet.PrintOut '<<--直接印刷するなら「'」を消去。 に変えてください。

angelnavi
質問者

お礼

その「まさか」でした…。 言われてみれば、ごもっともですm(_ _)m 無事解決しました。 今日中にしなければいけなかったので、とても助かりました! ありがとうございました!!

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

> 出てきたウィンドウに部数を入力しても ということですが、通常はなにも出ずにそのまま印刷されます。 で、質問に記載されたコードでangelnavi さんの希望通りに 1枚目の紙には「1」「2」 2枚目の紙には「3」「4」 と記載されたものが印刷されます。 プリンタの設定でなにかウィンドウが出るような設定「プレビューを表示する」とかがされていないでしょうか。 Application.InputBox("印刷部数は?") は Application.InputBox("印刷部数は?", Type:=1) 入力を数値型に指定しておいた方がいいと思います。

angelnavi
質問者

補足

kkkkkmさん、いつもありがとうございます。 >通常はなにも出ずにそのまま印刷されます …とのことですが、ウィンドウは出てきます。よく分かりませんが 「Application.InputBox("印刷部数は?")」 が、そういうウィンドウを出す指示なのではないでしょうか? そのウィンドウで部数を入力して「OK」を押すのですが、それだけでは 印刷されないので、手動で印刷ボタンを押しています。 すると、通常通り印刷のプロパティ画面が出て来るので、そこで印刷 ボタンを押すと印刷されます。 あとは先述の通りで、印刷画面で「印刷」ボタンを押した回数だけ印刷 されるというのが現状です。 それでも一応目的は達せられるのですが、100回押すのはちょっと面倒 なので質問させて頂きました。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>つまり、1枚目の紙には「1」「2」 >      2枚目の紙には「3」「4」 では Sub Sample() Dim i As Long, myCnt As Long, j As Long myCnt = Application.InputBox("印刷部数は?") On Error Resume Next Select Case myCnt Case False MsgBox "キャンセルされました" Case Else For i = 1 To myCnt j = i * 2 - 1 Range("D1").Value = j Range("D16").Value = j + 1 ActiveSheet.PrintPreview '<<--プレビュー画面が不要ならこの行を削除。 'ActiveSheet.PrintOut '<<--直接印刷するなら「'」を消去。 Next i End Select End Sub

angelnavi
質問者

補足

ありがとうございます! 教えて頂いたコードでも質問前と同じ結果になってしまったのですが、 そこで自分の印刷の仕方が間違っていることに気が付きました。 「印刷部数は?」のウィンドウで部数を入力するので、てっきり印刷 ボタンを1回押したらその部数までずらっと自動で出て来ると思って いましたが、1回1回印刷ボタンを押さないといけないんですね。 (紙4枚分印刷したい場合は4回押す) その方法でやったら上手く行きました。 ありがとうございます。 因みに、今回は200番まで(つまりA4紙100枚分)印刷するのですが、 1回1回印刷ボタンを押さずに済む方法がもしあったら教えて頂けますか?

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

D1=1、D16=2で、range("A1:E30")のPrintOutを発行すると1,2で1枚印刷されます。 そこでD1,D16を希望の値にして(D1=3、D16=4) range("A1:E30")のPrintOutを発行すると、3,4で1枚印刷されます。 D16が必要番号になるまでForNextででも、印刷すればしまいのように思うが、勘違いかな? 2枚分のセル範囲を使って印刷できる方法。 印刷物の実質内容がバラバラだとそうはいかない。 その場合はD1,D16に相当するセルに適当な数をセットしておく必要がある。 ーー エクセルにはBeforePrintイベントはあっても、BeforePagePrintに当たるイベントは無いようなので、1枚印刷したつど、セルに番号設定のため、プログラムで介入をすることはできないと思う.もしこれができれば、2枚分のセル範囲で印刷できる。 ーー シートの下行の方に、3,4以下のセル範囲を作って(プログラムでできる)、白紙じゃなく内容があるなら、第1枚目部分をコピーしておいて、改ページブレークをいれ、シートの全データ範囲を指定して印刷するのも、できそうだが、スマートではないと思う。 連続したn枚分のセル範囲を使う。