エクセルの表に複数枚印刷したときに連番をつけたい

このQ&Aのポイント
  • エクセルの表に複数枚印刷する際に、連番を挿入したい場合にどのようなコードを使えば良いか教えてください。
  • マクロを使用してエクセルの表に連番を挿入し、複数枚印刷する方法を教えてください。
  • エクセルの表に連番を挿入して印刷する際に、開始番号を3000001番から始める方法を教えてください。
回答を見る
  • ベストアンサー

エクセルの表に複数枚印刷したときに連番をつけたい

Sub NumberPrint() Dim idx As Integer Dim frmPage, toPage frmPage = Application.InputBox("連番を挿入して印刷します" & Chr(13) _ & "開始番号を入力してください", Type:=1) toPage = Application.InputBox("終了番号を入力してください", Type:=1) If frmPage > 0 And toPage >= frmPage Then For idx = frmPage To toPage Range("AW3").Value = idx ActiveSheet.PrintOut Next idx Else MsgBox "開始番号、終了番号が不適切です。印刷は行いません" End If End Sub過去の質問をみて上記マクロを使用して印刷できましたがスタートの番号は3000001番からスタートさせたいのですがエラーが出てしまいます。どのようなコードにしたらいいのか分からないため教えて下さい。素人で今まで使用したことがないのですいません

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! おそらく変数の宣言部分でエラーになっていると思われます。 >Dim idx As Integer を >Dim idx As Long と長整数型にしてみてはどうでしょうか? 整数型の Integer は -32,768 ~ 32,767 の範囲しか格納できないはずです。 ※ 長整数型だと -2,147,483,648 ~ 2,147,483,647 の範囲の格納が可能です。m(_ _)m

kaoru75
質問者

お礼

早速の回答ありがとうございます♪ きちんと起動しました。 とても助かりました。 もう少し勉強したいと思います。

関連するQ&A

  • マクロ連番印刷の桁数でオーバーフロー

    マクロ初心者です。OSはWindows7Proです。 伝票に連番を印刷したくて、当サイトで見つけた下記のマクロをエクセル2010で実行しました。 連番桁数が5桁までは問題なく実行できるのですが、6桁になると「実行時エラー’6’オーバーフローしました」となります。 デバッグのボタンをクリックすると10行目の「For idx = frmPage To toPage」がマーカーで表示されます。 伝票の連番は6桁しか使いません。 私にはお手上げです。どなたか教えてください。 Sub 連番印刷() Dim idx As Integer Dim frmPage, toPage frmPage = Application.InputBox("連番を挿入して印刷します" & Chr(13) _ & "開始番号を入力してください", Type:=1) toPage = Application.InputBox("終了番号を入力してください", Type:=1) If frmPage > 0 And toPage >= frmPage Then kakunin = MsgBox("番号" & frmPage & "~" & toPage & "で印刷をしますか ?", 4, "番号の確認") If kakunin = 6 Then For idx = frmPage To toPage Range("e1").Value = idx ActiveSheet.PrintOut Next idx End If Else MsgBox "開始番号、終了番号が不適切です。印刷は行いません" End If End Sub

  • ナンバリング印刷について

     はじめまして VBA初心者です。下記のようなマクロを見つけました。下記のマクロを実行すると開始番号、終了番号を入力すると印刷までいってしまいます。    開始番号、終了番号を入力した後、開始番号と終了番号の確認画面が出で、確認後に印刷か中止かを選択できるようにしたいと思っています。    よろしくお願いします。 Sub NumberPrint() Dim idx As Integer Dim frmPage, toPage frmPage = Application.InputBox("連番を挿入して印刷します" & Chr(13) _ & "開始番号を入力してください", Type:=1) toPage = Application.InputBox("終了番号を入力してください", Type:=1)  If frmPage > 0 And toPage >= frmPage Then For idx = frmPage To toPage Range("e1").Value = idx ActiveSheet.PrintOut Next idx Else MsgBox "開始番号、終了番号が不適切です。印刷は行いません" End If

  • 印刷履歴を別シートに自動で残していきたいです

    下記のコードを使用して連番での印刷を実行しています。 Sheet1とSheet2を使用していて、各番号ごとにSheet1と2が印刷されていきます。 ここにSheet3を追加して印刷履歴を自動で残していくことはできますでしょうか。 履歴には、(印刷日)(開始番号)(終了番号)を残せたらと思っています。 また、追加したSheet3は確認用としてのみ利用したいので印刷はこれまで通りSheet1と2のみでいければとても助かります。 現在使用しているコードについては、いろいろと自己流で調べてなんとかたどり着いた感じですので、自身には1から作れるような知識はありません。 ご教授いただけませんでしょうか。宜しくお願い致します。 Sub NumberPrint() Dim idx As Integer Dim frmPage, toPage frmPage = Application.InputBox("連番で印刷します" & Chr(13) _ & "開始番号は?", Type:=1) toPage = Application.InputBox("終了番号は?", Type:=1) If frmPage > 0 And toPage >= frmPage Then For idx = frmPage To toPage Range("D7").Value = idx ActiveWorkbook.PrintOut Next idx Else MsgBox "開始番号と終了番号を正しく入力し直してください" End If End Sub

  • VBAに範囲を指定して印刷

    特定のセルに数字を入力することでVLOOKUPで印刷ページを 検索して指定できるシートを作成しています。 下記のようなVBAを作成しました。 印刷開始ページと印刷終了ページを指定する場合、 セルの指定はどのようにすれば、よいのでしょうか? 開始ページと終了ページが同じセルの為、 開始ページ=Rnage("セル") 終了ページ=Rnage("セル") としてしまいますと、エラーが出てしまいます。 Sub 印刷() Dim S As Long Dim B As Long S = Application.InputBox("印刷開始ページを入力", Type:=1) If 開始ページ = 0 Then Exit Sub B = Application.InputBox("印刷終了ページを入力", Type:=1) If 終了ページ = 0 Then Exit Sub ActiveSheet.PageSetup.Order = xlOverThenDown ActiveWindow.SelectedSheets.PrintOut _ From:=S, To:=B, Collate:=True End Sub 宜しくお願い致します。

  • エクセルで連続印刷した範囲を印刷済とわかるように

    エクセルで以下のようなプログラムで変数s、eに入力の範囲でシートの連続印刷しております。印刷し終わった後ですが、変数s~eの範囲を赤くして印刷済かどうかをひと目でわかるようにしたいと思います。可能でしょうか。 Sub 範囲を指定して印刷() Dim s As Long Dim e As Long Dim i As Long On Error Resume Next s = InputBox("開始No.を入力して下さい。") If s = 0 Then Exit Sub e = InputBox("終了No.を入力して下さい。") If e = 0 Then Exit Sub For i = s To e Worksheets("A").Range("C1") = i Application.Wait Now + TimeSerial(0, 0, 10) Worksheets("B").PrintOut Next i End Sub

  • 別シートのリストを参照して印刷作業をVBA登録

    別シートのリストをVLOOKUPで参照して印刷する作業をVBA登録したいと考えています。 そこで下記のようなVBAを作成しました。 Sub 印刷() z = Application.InputBox("印刷開始番号") x = Application.InputBox("印刷終了番号") For o = z To x Range("G6").Value = o ActiveSheet.PrintOut Next End Sub セルG6をVLOOKUPで参照して、開始ページと終了ページをINPUTBOXで入力できるよに しています。 しかしエラーがでてしまいます。 どこが、問題ありますでしょうか? 宜しくお願いします。

  • EXCEL VBA(初心者)印刷ループについて

    こんばんは。 EXCEL VBA初心者です。 以下のような印刷ループのVBAを作りました。 (シート1にデータを入力しシート2で印刷) Sub 連続印刷() Dim x As Integer x = Application.InputBox( _ prompt:="先頭ページの番号を入力してください") Y = Application.InputBox( _ prompt:="最終ページの番号を入力してください") line: Worksheets("1").Select Range("B1").Select For i = x To Y 'ループ開始番号と終了番号を追加 ActiveCell.FormulaR1C1 = i '変数 i を代入するように修正 ' Range("B1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Next i '次へループ End Sub というものです。 以下の問題点を改善したいのです。 (1)開始番号と終了番号のいずれかが ”空白”の場合は  VBAを中止し何も印刷しない(何もメッセージを表示しない) (2)開始番号が終了番号より数字が大きい場合も(1)と同様の処理にしたい というものです。 初心者のためご教授ください。 よろしくお願いいたします。

  • Inputboxに開始番号と終了番号を入力し印刷

    InputboxにInputboxに印刷する番号の開始番号と終了番号を入力して、 自動で印刷できるようにしたいと考えています。 シートにはセルG6に数字を入力すれば、VLOOKUPで印刷内容を 変更できるように設定しています。 以下のようなVBAを作成しました。 しかし、Loopが止まらないです。 どうすればよいでしょうか? また他に間違いは有りますでしょうか? Sub 印刷() Do a = InputBox("開始番号を入力") z = InputBox("終了番号を入力") Range("G6") = a a = a + 1 ActiveWindow.SelectedSheets.PrintOut Copies:=1 Loop Until a = z End Sub

  • Excel VBA 連番印刷

    昨日以下の質問をさせていただいた者です。 http://okwave.jp/qa/q8349562.html こちらで教えていただいた以下のコードに、 J2のセルに連番を振るコードを付け足したいと思い、 同じくこちらのサイトの過去の履歴にあった以下コードを参考にとやってみているのですが、 Next で指定された変数の参照が無効です。と言われてしまいます… 印刷部数の指定はいらず、sheet印刷のJ2セルに1から始まる連番を振りたいのです。 どのように修正をしたらいいのかご教示願います。 Sub Sample4() Dim i As Long, endRow1 As Long, endRow2 As Long, myArea1 As Range, myArea2 As Range Dim wS1 As Worksheet, wS2 As Worksheet, wS3 As Worksheet Set wS1 = Worksheets("DB") Set wS2 = Worksheets("印刷") Set wS3 = Worksheets("Sheet3") endRow1 = wS1.Cells(Rows.Count, "A").End(xlUp).Row Range(wS1.Cells(1, "A"), wS1.Cells(endRow1, "A")).AdvancedFilter Action:=xlFilterInPlace, unique:=True wS1.Range("A:A").Copy wS3.Range("A1") wS1.ShowAllData For i = 2 To wS3.Cells(Rows.Count, "A").End(xlUp).Row endRow2 = wS2.Cells(Rows.Count, "B").End(xlUp).Row If endRow2 > 9 Then Range(wS2.Cells(10, "B"), wS2.Cells(endRow2, "H")).ClearContents Range(wS2.Cells(10, "J"), wS2.Cells(endRow2, "J")).ClearContents End If wS1.Range("A1").AutoFilter field:=1, Criteria1:=wS3.Cells(i, "A") wS2.Range("B6") = wS3.Cells(i, "A") Set myArea1 = Range(wS1.Cells(2, "B"), wS1.Cells(endRow1, "H")).SpecialCells(xlCellTypeVisible) Set myArea2 = Range(wS1.Cells(2, "I"), wS1.Cells(endRow1, "I")).SpecialCells(xlCellTypeVisible) myArea1.Copy wS2.Activate ActiveSheet.Range("B10").Select Selection.PasteSpecial Paste:=xlPasteValues myArea2.Copy wS2.Activate ActiveSheet.Range("J10").Select Selection.PasteSpecial Paste:=xlPasteValues endRow2 = wS2.Cells(Rows.Count, "B").End(xlUp).Row 'Range(wS2.Cells(1, "A"), wS2.Cells(endRow2, "J")).PrintOut Next i wS1.AutoFilterMode = False wS3.Cells.Clear End Sub 連番印刷のコード Sub NumberPrint() Dim idx As Integer Dim res  res = Application.InputBox("印刷部数を入力してください", Type:=1)  If res > 0 Then   For idx = 1 To res    Range("AW3").Value = idx    ActiveSheet.PrintOut   Next idx  End If End Sub

  • エクセルマクロ 特定の文字列を含む行のみを残す (マクロ修正)

    以下のマクロは、EXCEL2003で 「特定の文字列が含まれている列を削除する」動作をするマクロです Sub Macro1() Const col As String = "A" '文字列が入力されている列 Dim idx As Long Dim keyWord keyWord = Application.InputBox("削除対象の文字列は?", Type:=2) If TypeName(keyWord) <> "Boolean" And Len(keyWord) > 0 Then   For idx = Cells(65536, col).End(xlUp).Row To 1 Step -1     If InStr(Cells(idx, col).Value, keyWord) > 0 Then '    If Application.CountIf(Rows(idx), "*" & keyWord & "*") > 0 Then       Rows(idx).Delete     End If   Next idx End If End Sub このマクロを、 「特定の文字列が含まれている行のみを残し、それ以外を削除する」 というマクロに変更したいと思っています。 是非ご回答お願いいたします。