[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『明細書作成の問い合わせ』(おじさん)
明細書作成で行き詰っています。
1)部材の発注明細書作成で、下記プログラムを参考書から応用して使用しておりましたが、発注先の注文数が増えて明細書の行数以上にデータがあり作成していた明細書が使用できなくなりました。貼付け用データの行数を指定して明細書1ページ目・2ページ目・・・と張り付けるには、どのように記述を加えればよいのかご教授お願いいたします。
尚、明細書の明細貼付けは1ページ目10行目から39行目で、2ページ目は49行目から78行目、3ページ目は88行目から117行目で作成しております。貼付け用データは7行目から2006行目までで作成しております。
2)特定の部材が斡旋部材扱いとなったため、別に斡旋部材明細書として発行しなければなりません、その部材が判別できるよう貼付け用データのM列に * のしるしを入力しております。明細書作成時、自動的に振り分けできないでしょうか、よろしくお願いいたします。
Sub 明細書作成()
Dim Gyousya As String Dim i As Integer Dim cnt As Integer
Gyousya = Worksheets("貼付用データ").Range("C3").Value Worksheets("明細書").Copy after:=Worksheets("明細書") Worksheets(7).Name = Gyousya Worksheets(Gyousya).Range("B5") = Gyousya
cnt = 10 For i = 7 To 2006 With Worksheets("貼付用データ") If .Range("C" & i) = Gyousya Then Worksheets(Gyousya).Range("B" & cnt) = .Range("D" & i) Worksheets(Gyousya).Range("C" & cnt) = .Range("E" & i) Worksheets(Gyousya).Range("D" & cnt) = .Range("F" & i) Worksheets(Gyousya).Range("E" & cnt) = .Range("G" & i) Worksheets(Gyousya).Range("F" & cnt) = .Range("H" & i) Worksheets(Gyousya).Range("G" & cnt) = .Range("I" & i) Worksheets(Gyousya).Range("H" & cnt) = .Range("J" & i) Worksheets(Gyousya).Range("I" & cnt) = .Range("K" & i) Worksheets(Gyousya).Range("J" & cnt) = .Range("L" & i) cnt = cnt + 1 End If End With Next
End Sub
以上よろしくお願いいたします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
明細書のフォーマットが分からないけど、一応 もし117行目まできちゃったらどうするんですか? Sub 明細書作成() Dim Gyousya As String Dim i As Integer Dim cnt As Integer Dim DSH As Worksheet Set DSH = Sheets("貼付用データ") Gyousya = DSH.Range("C3").Value Sheets("明細書").Copy after:=Sheets(Sheets.Count)
With Sheets(Sheets.Count) .Name = Gyousya .Range("B5") = Gyousya cnt = 10 For i = 7 To 2006 If DSH.Range("C" & i) = Gyousya Then If .Range("M" & i) = "*" Then '//斡旋明細の処理 Else '//通常明細の処理 .Range(.Cells(cnt, "B"), .Cells(cnt, "J")).Value = DSH.Range(DSH.Cells(i, "D"), DSH.Cells(i, "L")).Value Select Case cnt Case 39: cnt = 49 Case 78: cnt = 88 Case 117: Exit For '//117行目以降は? Case Else: cnt = cnt + 1 End Select End If End If Next End With End Sub
私なら印刷設定で、先頭行とフッター入れて、入力されていないセルは非表示にします。 (稲葉) 2014/09/11(木) 16:26
(おじさん) 2014/09/11(木) 17:29
エラーの内容とフォーマットが分からないと答えようがないですなぁ・・・
(稲葉) 2014/09/11(木) 18:05
A B C D E F G H I J K L M 1 2 3 C3に業者名 4 5 6 発行日 担当 業者名 発注番号 型番 品名 色 数量 単価 発注金額 備考 発注日 斡旋物 7 9/1 A XXX 9001 A-1 AAA 赤 12 100 1200 9/2 * 8 9/1 B XXX 9002 B-1 BBB 100 125 12500 9/2 9 9/3 A XXX 9003 C-1 CCC 黒 150 80 12000 9/4 10 ・ ・ ・ 2006
明細書シートは、
A B C D E F G H I J K L M 1 2 3 4 5 B5に業者名 6 7 8 9 発注番号 型番 品名 色 数量 単価 発注金額 備考 発注日 10 9002 B-1 BBB 100 125 12500 9/2 11 9003 C-1 CCC 黒 150 80 12000 9/4 12 ・ ・ ・ 39 40 小計 24500 このようになっており、他に入力シートや単価表シート・月別データ等のシートがあり、貼付け用シートが5番目で明細書シートが6番目にあります。
エラーは、実行時 .Name = Gyousya でデバックとなります。
初心者のため、どう対処してよいのかわかりません。よきアドバイスをお願いいたします。
(おじさん) 2014/09/12(金) 15:32
その「エラーの内容」と「エラー番号」が知りたいんですけど 同じシート名があるか、シート名に使えない文字がありませんか? 変数Gyousyaがどうなっているかローカルウィンドウ等で確認してください。
あとシート名を番号で指定するのはやめた方がいいです。 シートの並び順が絶対変わらないならそれでもいいですが、通常新しくシートを作成するときは 一番後ろに追加して、一番後ろのシートを編集する、というコードになります。 提示したコードでは >Sheets("明細書").Copy after:=Sheets(Sheets.Count) >With Sheets(Sheets.Count) この2行です。
(稲葉) 2014/09/12(金) 16:00
(おじさん) 2014/09/13(土) 16:06
こっちはテストデータで問題ないことを確認しているので、 あとはご自身で修正していただくしかありません 変数が希望通りに変化しているか確認してください (稲葉) 2014/09/14(日) 16:08
(おじさん) 2014/09/15(月) 08:54
(おじさん) 2014/09/16(火) 10:16
デバッグしてくださいよ。 >If .Range("C" & i) = Gyousya Then この行は自分で作ったコードですよね?
提示されたデータには「貼付用データシートのC列i行」の業者名は「XXX」で C3の業者名は「C3に業者名」で、一致していませんよね?
なので私は「何も転記されないこと」は正しいと判断しましたが、違うのですか?
>自分で確認修正を試みましたが、何ともなりません。 どのように修正されて、どのような結果になったことが「何ともならなかった」事なんですか?
シート名を変更してみたけど、変数をSetするところで「インデックスが有効範囲にありません」エラー がでたので「なんともならなかった」のですか?
それとも貼付用データと明細の項目の並び順が異なるから、そのまま貼り付けると項目がずれてしまう ことが「なんともならなかった」のですか?
それとも別の何かですか?
>>’//斡旋明細の処理 及び >’//通常明細の処理 どちらもただのコメントです。
前者は「M列に"*"がはいっていたら、処理を分岐してほしいとのことでしたので、ご自身で処理を記述 する必要がございます。 後者は既に処理が記述してあります。
VBAの初心者は仕方ありませんが、 日本語の初心者ではありませんよね?
人に伝える気持ちを忘れて、初心者だからと甘えないでください。
『マクロを「書いてみた」「動かした」「ダメでした」。』 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200.html 『デバッグトレースの開始方法』 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030.html
(稲葉) 2014/09/16(火) 10:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.