• ベストアンサー

エクセルで指定したセルにページ番号を表示して印刷する方法

エクセルで1枚のシートを複数枚印刷時に指定したセルにページ番号を表示させるにはどのようにしたら宜しいのでしょうか? 使用目的は、印刷されたプリントに『11-001』や『11-112』と表示したいと考えてます。 ここで『11』はそのプリントを使用する月で『001』や『002』は使用したプリントを把握する為につけた通し番号としたいと考えてます。 可能であれば併せて途中の番号からの印刷方法もご教示頂けますと幸いです。 また、恥ずかしながらVBAの使用環境はありますが、未経験です。 可能でしょうか?

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

セルに「月-通番」を入力して印字するマクロサンプルです。 以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。 一見長いですが、実は最後の4行だけが印刷する実体で、それより前は部数、通番の開始番号を入力+チェックするロジックです。 このマクロではA1セルに「月-通番」をセットしますが5行目を変更すれば好きなセルにできます。また通番を3桁に整形しているため、通番が1000以上になると桁あふれしますのでご承知おきください。 なお下記では「月」は印刷当日の月になります。 これを変更したい場合は勉強のためご自身でマクロをいじってみてください。ヒントは書いたつもりです。 Sub Macro1() Dim cnt, num Dim psw As Boolean Dim idx As Integer Const trg As String = "A1" '通し番号を入れるセル Dim dt As Date  dt = Date '今日の日付を代入。これをDateValue関数にすると…  Do   cnt = Application.InputBox("印刷部数を入力してください", "部数", Type:=1)   If TypeName(cnt) = "Boolean" Then    Exit Sub   Else    If cnt >= 1 Then     cnt = Int(cnt)     psw = True    Else     MsgBox "入力できるのは1以上の数字です"    End If   End If  Loop Until psw = True  psw = False  Do   num = Application.InputBox("通番は何番からですか?", "通番", Type:=1)   If TypeName(num) = "Boolean" Then    Exit Sub   Else    If num >= 1 Then     num = Int(num)     psw = True    Else     MsgBox "入力できるのは1以上の数字です"    End If   End If  Loop Until psw = True  For idx = 1 To cnt   Range(trg).Value = Format(dt, "MM") & "-" & Format(num + idx - 1, "000")   ActiveSheet.PrintOut  Next idx End Sub

tengu1978
質問者

お礼

ありがとうございました。 私が検討していた物が完璧に仕上がりました。 マクロへの興味が非常に沸いてきました。 今から勉強してどの程度出来るか不明ですが、 実際に勉強してみようと思います。

その他の回答 (1)

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

印刷してマクロの記録をとる。 Sub Macro2() ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Application.CalculateFull End Sub のようになるから、そのPrintOut行の前に Range("N30") = ページ数  N30はページ数を入れるセルの例 を入れる。 印刷を繰り返すなら、For Nextの中で、「ページ数」を、変化する i から導出すればよい。 また現在月から導出できるならそれもできる。

tengu1978
質問者

お礼

ありがとうございました。 今回はzap35さんを参考にさせて頂きましたが、 また何かありましたらどうぞ宜しくお願い致します。

関連するQ&A

専門家に質問してみよう