『請求書の作成』(トマト) マクロで請求書の作成をしているのですが 分からない事が出てきましたので、教えて頂けますでしょうか。 Sheet1は納品書フォーム Sheet2=納品書を発行したデータを保存 A B C D E F   G 日付 伝票No. 品番 品名 数量  単価 金額 2010/05/10 K-001 A-001 糸    1     500   500            A-002 釦    100 10 1000 2010/05/19 K-002 A-001 糸    3     500   1500 2010/05/21 K-003 A-002 釦   1000 10 10000 sheet3=請求書 A B C D E F   G 日付 伝票No. 品番 品名 数量  単価 金額 この様になっていて、I3に年K3に月日を入力すればSheet2の日付によって Sheet3に表示させたいのですが。 ----------------------------------------------------------- 例)I3=2010 K3=5月20日  ↓請求書 A B C D E F   G 日付 伝票No. 品番 品名 数量  単価 金額 2010/05/10 K-001 A-001 糸    1     500   500            A-002 釦    100 10 1000 2010/05/19 K-002 A-001 糸    3     500   1500 ----------------------------------------------------------- この様にしたいです。 またI3とK3の日付により前回の請求額、また入金額も表示させたいのですが Sheet4=請求書合計データ A    B C   D E 日付    請求No. 御買上額 消費税 請求額 2010/04/20締め分 S-001 5000 250 5250                         ↑この金額を請求書のA10に表示 Sheet5=売掛帳 A B C D E 日付 伝票No. 売掛 入金額  残高 2010/04/18 K-005 5250 5250 2010/05/10 K-001 1575 6825 2010/05/19 K-002 1575 8400 2010/05/20 5250 3150 2010/05/21 K-003 10500 13650 この5/20の入金分をC10に表示させたいです。 こんな事可能なのでしょうか…?? 宜しくお願い致します。 ---- できる、できないでいえば可能だとは思いますが、 >マクロで請求書の作成をしているのですが とのことであれば、まずはそれを提示したほうが解決が早いかと思います。 回答する側からすれば1から作成するより、あるものを変更するほうが早い ケースが多いので。 (Mook) ---- Mook様 ありがとうございます。 現在制作中のBOOKは多数のシートに色々なマクロが記載されているのですが この20日で締めて表記する所だけが全く分かりません。 現在のマクロは下記の通りです。 Private Sub CommandButton1_Click() '----このボタンで請求金額を表示----- 全く分からない為手つかずです。 ↓このマクロで請求書の発行と転記処理を行います。 Private Sub CommandButton3_Click() If vbNo = MsgBox("請求処理を行います" & Chr(13) & Chr(13) & _ "よろしいですか?" _ , vbQuestion + vbYesNo, "確認") Then Exit Sub End If Dim n As Long With Worksheets("合計請求データ") n = .Range("B65536").End(xlUp).Row Worksheets("請求書").Range("G3").Value = "S-K0" & n& End With '------合計データの転記-------------- With Worksheets("合計請求データ") 'データシートの最下行を取得 i = .Range("A65536").End(xlUp).Row + 1 .Cells(i, 1).Value = Range("G2").Value '処理日 .Cells(i, 2).Value = Range("G3").Value '伝番 .Cells(i, 3).Value = Range("E10").Value '小計 .Cells(i, 4).Value = Range("F10").Value '消費税 .Cells(i, 5).Value = Range("G10").Value '合計 End With If vbNo = MsgBox("納品書の発行を行います" & Chr(13) & Chr(13) & _ "よろしいですか?" _ , vbQuestion + vbYesNo, "確認") Then Exit Sub End If '-----印刷----- Worksheets("入出荷処理").PrintOut From:=1, To:=1 '1ページ目を1部発行 End Sub 初歩的なマクロしか分からないので…スミマセンがご教授お願い致します。 (トマト) ---- 不明な点を何点か確認です。 ・日付の情報が入るのはどのシートですか? ・上記のマクロには該当する部分が見当たらないのですが。 ・Sheet2 に日付のない行があるように見えますが、実際そうなのでしょうか。 ・前回の請求額が A10 ということですが、転記したデータは9行以下ということは  保障されているのですか? (Mook) ---- Mook様 御連絡遅くなり申し訳ございません。 >・日付の情報が入るのはどのシートですか? 日付の入るシートはsheet2で納品書を発行ごとに転記されたデータをためていきます。 フォームの詳細は下記の通りです。 A B C D E F   G 日付 伝票No. 品番 品名 数量  単価 金額 2010/05/10 K-001 A-001 糸    1     500   500            A-002 釦    100 10 1000 2010/05/19 K-002 A-001 糸    3     500   1500 2010/05/21 K-003 A-002 釦   1000 10 10000 締めの年月日を入れるシートはsheet3のI3=2010 K3=5月20日 となっております。 >・上記のマクロには該当する部分が見当たらないのですが。 請求書シート内のマクロは日付ごとに締めをして表示するマクロが全く分かりません ですので、記載出来ておりません…スミマセン >・Sheet2 に日付のない行があるように見えますが、実際そうなのでしょうか 実際この様に同じ日に納品が複数あった場合は2個目以降は日付が記載されません。 A    B C   D E 日付    請求No. 御買上額 消費税 請求額 2010/04/20締め分 S-001 5000 250 5250                         ↑この金額を請求書のA10に表示 この金額はsheet3の請求書のA10に表示したいです。 説明不足多くスミマセンが宜しくお願い致します。 (トマト) ---- おそらくこのままではうまくいかないと思いますが、現時点の情報をもとにした 処理です。 主な不明点は、各シートのデータの日付範囲です。 売掛が必ず先頭行から処理すればよいのか。 請求書合計データはどくらいの期間のデータがあるのか。 日付のデータはExcelの日付型が入っているのか。 これらを現状の状態に合わせて変更していく、たたき台として見てみてください。 Sub CommandButton1_Click() Dim dd As Date dd = CDate(Worksheets("Sheet3").Range("K3") & "年" & Worksheets("Sheet3").Range("K3")) Dim r As Long r = 2 With Worksheets("Sheet2") Do While .Cells(r, "C") <> "" If .Cells(r, "A") <> "" Then If .Cells(r, "A") > dd Then Exit Do End If .Range("A" & r).Resize(1, 8).Copy _ Destination:=Worksheets("Sheet3").Range("A" & r).Resize(1, 8) r = r + 1 Loop End With Worksheets("Sheet3").Range("A10") = Worksheets("Sheet4").Range("E2") End Sub (Mook) ---- Mook様 ご連絡ありがとうございます。 早速試してみましたが、型が一致しませんとなりました。 dd = CDate(Worksheets("Sheet3").Range("I3") & "年" & Worksheets("Sheet3").Range("K3")) ↑ここの部分です。 Sheet名は確認しましたが間違いありません。 何が違うのでしょうか… すみませんがよろしくお願いいたします。 トマト ---- Sheet3 のI3 には 2010 という数値が、K3には "5月20日" という文字列が 記載されていることを前提としたコードです。 これと異なるのであれば、コードの修正が必要です。 簡単にテストをするのであれば、 dd = CDate("2010/05/20") とすれば、先の動作を確認できるかと思います。 (Mook)