- 締切済み
No.を指定して印刷したい
以前に、『EXCELでNo.を変えて印刷したい』というタイトルで質問をしてVBAの記述を教えてもらって解決したのですが、引き続き利用することになりできればVBAの画面からではなくEXCEL上でNo.を指定して印刷をしたいのですが、どうすればいいでしょうか? im i As Integer For i = 1 To 500 ←この部分を印刷指定ボタンを押せば番号を入力できるようにしたい!(例:管理No.0100~0120と入力したら管理No.が0100~0120の20枚が印刷される) Range("A1").Cells = "No." & Format(i, "0000") ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True DoEvents Next i
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 前回の質問の内容をみて、本来はトラブルの元になるので、書いてはいけないことかもしれませんが、加工するなら、#3のzap35さんのコードを参照してください。私自身が書こうと思いましたが、完成度が高いので、そのまま使わせていただくことにしました。(zap35さん、無断ですみません) http://oshiete1.goo.ne.jp/qa2675415.html? ANo.2 Sub PrintMacroR() 'http://oshiete1.goo.ne.jp/qa2675415.html zapさんのコードを加工 Dim i As Integer, ws As Worksheet, pr As Integer, pr1, pr2 pr1 = Application.InputBox(prompt:="最初の数を入力してください,0はいりません", Type:=1) If VarType(pr1) = vbBoolean Then Exit Sub pr2 = Application.InputBox(prompt:="最後の数を入力してください,0はいりません", Type:=1) If VarType(pr2) = vbBoolean Then Exit Sub If pr2 >= pr1 And (pr2 - pr1) >= 0 Then pr = pr2 - pr1 + 1 'キャンセル出来るようにする If MsgBox("No." & Format$(pr1, "0000") & " ~No." & Format$(pr2, "0000") & _ "の" & CStr(pr) & "部 を印刷します", vbOKCancel) = vbCancel Then Exit Sub End If For i = 1 To pr For Each ws In ActiveWindow.SelectedSheets ws.PageSetup.RightHeader = "" ws.PageSetup.RightHeader = "No." & Format$(pr1 + i - 1, "0000") Next ws 'プレビュー(テスト用) 'ActiveWindow.SelectedSheets.PrintPreview '印刷 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True 'ウェートを置く(DoEvents は意味がありません) 'Application.Wait Now() + TimeValue("00:00:02") '2秒 Next i End If End Sub ウェートを置くというのは、プリンタに一気にデータを送ってしまわないようにするためです。「'」を取れば、働きます。プリンタの処理スピードに合わせて入れたほうがよい場合があります。100枚程度では、今のWinXPとの組み合わせでは問題ないはずです。 >管理No.が0100~0120の20枚が印刷される 20枚ではなく、21枚のはずです。 ヘッダーは、A1なら、左上になっていましたが、元のご質問にあわせて、右上端にしました。違うようでしたら、.HeaderRight を .HeaderLeft に直してください。
- merlionXX
- ベストアンサー率48% (1930/4007)
こんな感じでしょうか。 Sub test01() Dim i As Integer, x As Integer, y As Integer x = Application.InputBox("管理ナンバー何番から印刷しますか?") y = Application.InputBox("管理ナンバー何番まで印刷しますか?") For i = x To y Range("A1").Cells = "No." & Format(i, "0000") ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True DoEvents Next i End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
(1)InputBoxを使う n=InputBox("始まり") m=InputBox("終わり") (2)セル(例えば)D1,F1を使う。 C1 印刷始点, E1 終わり と見出しをいれ, 印刷実行までに、値をD1,F1にいれ n=Range("D1").Value m=Range("D1").Value (3)フォームのテキストボックス利用