[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『連続印刷の方法』(狭山)
お世話になります。
Sheet 1 に、下記のようなリストがあります。
A B C D E・・・・・・ 4 1 山田太郎 ABC DEF 東京 5 2 佐藤太郎 ABC DEF 東京 6 3 佐々木気 ABC DEF 東京 7 4 佐藤太郎 ABC DEF 東京 8 5 佐藤太郎 ABC DEF 東京
Sheet 2 は、印刷用のフォームになっています。 (印刷範囲は A1:F59)です。
Sheet1のデータがリンクしてあります。(VLOOKUPで入れております) A列の番号を基準にしまして Sheet 2 の I3 のセルに入力すると Sheet 1の内容が出て印刷できるようにしてありますが 現在は 手入力で1枚づつ印刷しています。 指定すれば自動で連続印刷できるようにしたいのですが、 VBAのご伝授をお願い出来ないでしょうか 要望はマクロを実行すると "印刷する最初の番号を入力" "印刷する最後の管理番号を入力" "印刷が完了。" とメッセージが欲しいです。
どうぞよろしくおねがいします。
< 使用 Excel:Excel2016mac、使用 OS:Windows10 >
"質問"だとして
>Sheet2 のI3セルに入力すると Sheet1の内容が出て印刷できるようにしてありますが
> "印刷する最初の番号を入力"
> "印刷する最後の管理番号を入力"
> "印刷が完了。"
とのことですから、「最初の番号」〜「最後の管理番号」を順番に
(1)Sheet2のI3セルに入れる (2)印刷する
を繰り返すだけでよいように思いますが、どこでつまってますか?
(もこな2 ) 2020/05/10(日) 18:35
参考に
Sub Test() Dim pSta As Long, pEnd As Long, i As Long
pSta = Application.InputBox("開始番号を入力してください。", Default:=1, Type:=1) pEnd = Application.InputBox("終了番号を入力してください。", Type:=1) With Sheets("Sheet2") For i = pSta To pEnd Step 59 .Range("I3").Value = i .PrintOut ' .PrintOut Preview:=True '印刷の度にプレビューを表示するのなら、こちらを使用 Next MsgBox "印刷が完了。", vbInformation .Range("I3").Value = 1 End With End Sub
(ピンク) 2020/05/10(日) 19:26
有難うございます。
(ピンク)様のコードで出来ました。
最初に入れれば良かったのですが以前に使用していました
別のコードを入れたのですがNGになってしまい
最初から教えていただいた方が早いと思い入れてしまいました。
申し訳ございませんでした。
Sub Test()
Dim ST As String
Dim EEND As String
ST = InputBox("印刷する最初の番号を入力")
If ST = "" Then
MsgBox "処理を中断します。"
Exit Sub
End If
EEND = InputBox("印刷する最後の管理番号を入力")
If EEND = "" Then
MsgBox "処理を中断します。"
Exit Sub
End If
Sheets("Sheet1").Select
Do While ST <> EEND + 1
Range("I3").Value = ST
Calculate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'MsgBox ST & "枚目の印刷をします。"
ST = ST + 1
Loop
MsgBox "印刷が完了。"
End Sub
上記のが使用できていたのですが今回貼り付けて行ったところ
駄目でした。
(狭山) 2020/05/10(日) 19:56
>上記のが使用できていたのですが今回貼り付けて行ったところ駄目でした。
ちゃんと、元のコードを理解するようにして"どのシートを対象にしているか"に着目するとよいとおもいます。
Sub Test改() Dim ST As String Dim EEND As String
ST = InputBox("印刷する最初の番号を入力") If ST = "" Then MsgBox "処理を中断します。" Exit Sub End If
EEND = InputBox("印刷する最後の管理番号を入力") If EEND = "" Then MsgBox "処理を中断します。" Exit Sub End If
'Sheets("Sheet1").Select ←いらない Do While ST <> EEND + 1 Worksheets("Sheet2").Range("I3").Value = ST '←対象シートを明示する Calculate Worksheets("Sheet2").PrintOut Copies:=1, Collate:=True '←対象シートを明示する 'MsgBox ST & "枚目の印刷をします。" ST = ST + 1 Loop
MsgBox "印刷が完了。" End Sub
(もこな2 ) 2020/05/10(日) 20:19
お世話になります。
コードの修正有難うございました。出来ました。
反省
最初からこれを行ったからダメだった事を説明をすればと反省しております。
本当に申し訳ございませんでした。
作業シートを明確にしないとダメだったんですね。
今後も宜しくお願い致します。
(狭山) 2020/05/10(日) 21:12
(もこな2 ) 2020/05/11(月) 08:25
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.