みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBAの「FOR~NEXT関数」について

VBAを初めて2ヶ月の超初心者です。

シートが2枚あり、sheet1は仕入金額一覧、sheet2は送付案内書になっています。VBAを利用して「sheet1から1行、sheet2へ転記し印刷後、次の行へ」と言う処理をしています。

Sub 送付案内()
Dim 行番号 As Integer
For 行番号 = 5 To 298
If Cells(行番号, 15).Value = 1 Then
Range(Cells(行番号, 2), Cells(行番号,12).Select
Selection.Copy
Sheets("送付案内").Select
Range(Cells(60, 1), Cells(60, 11)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Worksheets("送付案内").PrintOut
Sheets("作業").Select
End If
Next
End Sub
Sub 仕入先名()
Dim 行番号 As Integer
For 行番号 = 5 To 298
Sheets("作業").Cells(行番号, 2) = WorksheetFunction.VLookup(Cells(行番号, 1), Sheets("仕入先マスタ"). _
Range("$A$3:$B$1135"), 2, False)
Next
End Sub

これでVBAを実行した場合、仕入金額一覧の並び順と微妙(2~3点)に異なる順番で印刷されました。仕入先名や仕入金額に間違いはありませんでした。

同様の経験のある方等、原因がわかる方がいらしたら、教えてください。よろしくお願いします。

投稿日時 - 2009-07-10 14:13:45

QNo.5114125

困ってます

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

VBAの問題ではなくて、プリンタの設定の問題ということはないでしょうか。

スプールされる順番と印刷される順番が異なる
http://support.microsoft.com/kb/891594/ja

ドキュメントを確実に順番通り印刷するためには

・「全ページ分のデータをスプールしてから 印刷データをプリンタに送る」
・「スプールされたドキュメントを最初に印刷する」
を ON に設定します。

投稿日時 - 2009-07-10 14:36:41

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

こんにちは。

>Application.CutCopyMode = False
>Worksheets("送付案内").PrintOut

PrintOut だけというのは、いかにも記録マクロのようですが、とりあえず、

Application.Wait Now + TimeValue("00:00:10") '10秒
Worksheets("送付案内").PrintOut

果たして、10秒でよいのか分かりませんが、実際に、印刷する時間のタイミングを計って調整してください。いきなり、プリンタ・バッファへ送りっぱなしよりは、良いと思います。

投稿日時 - 2009-07-11 08:37:30

ANo.1

Sub 送付案内()
は"作業"シートのデータを"送付案内"シートに貼り付けて印刷しています。
>sheet1は仕入金額一覧
の"仕入金額一覧"シートは使われていません。

「仕入金額一覧の並び順」と"作業"シートは一致していますか?

投稿日時 - 2009-07-10 14:24:27

あなたにオススメの質問