[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『店コード別に印刷』(初心者マーク)
教えて下さい。
シート名:CSV のA列に通し番号 1,2,3,4・・・・ B列に店コード 101,102,103,104・・・・(※店コードは重複しています。101が10件のレコードだったり、102は3件だったり・・・) E列に商品名 ***、×××、○○○・・・・
とデータがあります。
このデータを シート名:PRINT2 に店コードを
=JIS(OFFSET(CSV!A2,MAIN!$D$5-1+MAIN!$D$4,MAIN!$D$4))で参照しています。
また、商品名を =JIS(OFFSET(CSV!D2,MAIN!$D$5-1+MAIN!$D$4,MAIN!$D$4))
で参照しています。
PRINT2では、一度に7件分のデータを表示しています。
現状、下記のVBAで印刷をすると店コードに関係なく通し番号順に印刷されてしまいます。
そこで、店コード別に印刷する方法をご教授下さい。
(Windows2000,Excel2003です)
Sub PRINT2()
Dim CSV_Count As Variant 'CSV Record Count ' Dim PRN_Count As Variant 'Print Count
CSV_Count = Worksheets("MAIN").Cells(3, 4).Value ' PRN_Count = Worksheets("MAIN").Cells(5, 4).Value
Do
PRN_Count = Worksheets("MAIN").Cells(5, 4).Value Sheets("PRINT2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Worksheets("MAIN").Cells(5, 4).Value = Worksheets("MAIN").Cells(5, 4).Value + 7
Loop Until CSV_Count < Worksheets("MAIN").Cells(5, 4).Value + 1
Worksheets("MAIN").Cells(5, 4).Value = 0 Sheets("CSV").Select Columns("A:A").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(1, 1), TrailingMinusNumbers:=True Cells.Select Sheets("CSV").Select
Selection.ClearContents Sheets("MAIN").Select
End Sub
現在やって居られる方法から 結構作り直す必要が有ると思うので 詳細を書いておかれるのが良いと思います。
PRINT2 シートには、商品名だけが表示されれば良いのか。 7行分のデータは、どのセルにどの様に表示されれば良いのか。 印刷は、範囲を指定して行うのか 全て印刷出来れば良いのか。 CSV シートのデータは、何順に並んでいるのか。
また、MAINシートのD3,D4,D5セル以外は何かに使用して居ますか? どの範囲を使用していますか? (どの範囲なら、マクロが使用しても構いませんか?)
(HANA)
MAINシートのD3,D4,D5セル以外は何も使用していません。
PRINT2 シートの A9に店コード D9に商品名 、A15に店コード D15に商品 、A21に店コード D21に商品名 、A27に店コード D27に商品名 、A33に店コード D33に商品名 、A39に店コード D39に商品名 、A45に店コード D45に商品名
と計7行にデータを表示させ、全部印刷したいです。
CSV シートのデータは 店コード順(昇順)に並んでいます。
宜しくお願いします。
(初心者マーク)
遅くなりました、済みません。 以下のようにしてみます。
マクロはMAINシートの B2:C8セルに店コード毎の7個ずつデータを書き出し PRINT2シートの印刷を実行します。 以下のコードはテストコードなので、プリントプレビューをします。 プレビューが表示されたら「閉じる(C)」で閉じてください。次へ進みます。
マクロは、PRINT2シートの所定の位置へデータをセットしませんので MAINシートの各セルのデータを参照して下さい。
MAINシートのイメージは [A] [B] [C] [1] No 店コード 商品名 [2] 1 [3] 2 [4] 3 [5] 4 [6] 5 [7] 6 [8] 7 この様にして有りますので、例えば >A9に店コード =IF(MAIN!B2="","",JIS(MAIN!B2))
>D9に商品名 =IF(MAIN!C2="","",JIS(MAIN!C2))
と言った感じで数式で参照する様にしておいて下さい。
コードは以下です。
'------ Sub 印刷() Dim myRow As Long, myCount As Long Sheets("MAIN").Select myRow = 1 With Sheets("CSV") Do Do myRow = myRow + 1 myCount = myCount + 1 Range("B" & myCount + 1).Value = .Range("B" & myRow).Value Range("C" & myCount + 1).Value = .Range("E" & myRow).Value Loop Until myCount = 7 Or .Range("B" & myRow + 1).Value <> .Range("B" & myRow).Value Sheets("PRINT2").PrintPreview ' Sheets("PRINT2").PrintOut Copies:=1, Collate:=True Range("B2:C8").ClearContents myCount = 0 Loop Until .Range("A" & myRow + 1).Value = "" End With End Sub '------
大きなループとして、CSVシートのA列のセルの値が「""」になる迄ループをします。 その中のループでは B2:C8に CSVシートのデータを書き出して行きますが カウント数が7になるか B列の一つ下の行のセルの値が現在の行の値と異なった時(新しいコードに成ったとき) ループを終わります。 中のループが終わるたびに、印刷をし B2:C8セルのクリアと、カウントのリセットを行います。
(HANA)
ありがとうございました!希望通りの印刷が出来ました。
分かり易い解説も嬉しいです!!
ループ処理について、とても勉強になりました!
(初心者マーク)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.