[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『明細書作成の問い合わせ』(おじさん)
明細書作成で行き詰っています。
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.