アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前に、『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

A 回答 (3件)

こんにちは。



前回の質問の内容をみて、本来はトラブルの元になるので、書いてはいけないことかもしれませんが、加工するなら、#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 に直してください。
    • good
    • 0

こんな感じでしょうか。



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
    • good
    • 0

(1)InputBoxを使う


n=InputBox("始まり")
m=InputBox("終わり")
(2)セル(例えば)D1,F1を使う。
C1 印刷始点,
E1 終わり
と見出しをいれ,
印刷実行までに、値をD1,F1にいれ
n=Range("D1").Value
m=Range("D1").Value
(3)フォームのテキストボックス利用
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!