- ベストアンサー
エクセルで指定したセルにページ番号を表示して印刷する方法
エクセルで1枚のシートを複数枚印刷時に指定したセルにページ番号を表示させるにはどのようにしたら宜しいのでしょうか? 使用目的は、印刷されたプリントに『11-001』や『11-112』と表示したいと考えてます。 ここで『11』はそのプリントを使用する月で『001』や『002』は使用したプリントを把握する為につけた通し番号としたいと考えてます。 可能であれば併せて途中の番号からの印刷方法もご教示頂けますと幸いです。 また、恥ずかしながらVBAの使用環境はありますが、未経験です。 可能でしょうか?
- みんなの回答 (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
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
印刷してマクロの記録をとる。 Sub Macro2() ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Application.CalculateFull End Sub のようになるから、そのPrintOut行の前に Range("N30") = ページ数 N30はページ数を入れるセルの例 を入れる。 印刷を繰り返すなら、For Nextの中で、「ページ数」を、変化する i から導出すればよい。 また現在月から導出できるならそれもできる。
お礼
ありがとうございました。 今回はzap35さんを参考にさせて頂きましたが、 また何かありましたらどうぞ宜しくお願い致します。
お礼
ありがとうございました。 私が検討していた物が完璧に仕上がりました。 マクロへの興味が非常に沸いてきました。 今から勉強してどの程度出来るか不明ですが、 実際に勉強してみようと思います。