エクセルVBAについての質問です。各顧客に

Writer: admin Type: arte Date: 2019-01-08 00:00
エクセルVBAについての質問です。各顧客に購入金額に対する値引きの明細書を作成したいと考え、コード記入しましたが、下記内容の不具合が生じてしまい困っております。コードと不具合事象を下記させていただきますので、お助け頂けますと幸いです。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Sub 値引明細書作成マクロ()Dim sh As WorksheetDim i As Long, j As LongApplication.ScreenUpdating = FalseWith Worksheets("貼付")For i = 3 To .Cells(Rows.Count, 1).End(xlUp).Row'シートの存在のチェックSet sh = NothingOn Error Resume NextSet sh = Worksheets(.Range("Q" & i).Value)On Error GoTo 0If sh Is Nothing ThenWorksheets("値引明細書").Copy after:=Worksheets(Worksheets.Count)Set sh = Worksheets(Worksheets.Count)sh.Name = .Range("Q" & i).Valuesh.Range("A3").Value = .Range("Q" & i).Valuej = 8Elsej = sh.Cells(Rows.Count, 1).End(xlUp).Value + 1End Ifsh.Range("A" & j).Value = .Range("R" & i).Valuesh.Range("B" & j).Value = .Range("S" & i).Valuesh.Range("C" & j).Value = .Range("T" & i).Valuesh.Range("D" & j).Value = .Range("U" & i).Valuesh.Range("E" & j).Value = .Range("V" & i).Valuesh.Range("F" & j).Value = .Range("W" & i).ValueNext iEnd WithApplication.ScreenUpdating = TrueMsgBox "作成終了!"End Sub~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**************************************<不具合事象>1,デバックで sh.Range("A" & j).Value = .Range("R" & i).Value で止まってしまう。2,実行しても、各顧客毎のシートが作成されず、データ毎にシートが作成されてしまいます。***************************************以上の点、どのようにしたら改善できるか教えていただけますと大変助かります。☆併せて教えていただきたい点があります。元データの各顧客毎のデータを明細書に貼り付けるにあたり、貼付先の明細書データを、顧客毎のデータ数に合わせた行数に自動的に合わせて、枠と合計の集計値を算出するコードを教えていただけますでしょうか。大変恐れ入りますが、どうか宜しくおねがいいたします。###不具合事象1について>j = sh.Cells(Rows.Count, 1).End(xlUp).Value + 1ですがj = sh.Cells(Rows.Count, 1).End(xlUp).Row + 1では無いでしょうか?A列の弊社CDに+1した行を参照する意味が分かりません。弊社CDに大きな値が入っているなどした場合>sh.Range("A" & j).Value = .Range("R" & i).Valueでエラーとなります。不具合事象2について『貼付』シートのQ列には何が入っているのでしょうか?>Set sh = Worksheets(.Range("Q" & i).Value)にてQ列と同じ名前のシートを検索し、無かったら新規作成しています。Q列に顧客名が入っているのであれば想定通りでしょうし、データ名などが入っていたらデータ毎にシートが出来ます。『貼付』シートのフォーマットが分からないため、どう修正したら良いかは分かりませんでした。『貼付』シートのデータ数の求め方.Cells(Rows.Count, 1).End(xlUp).Row-2『顧客毎』シートの貼り付け開始行の求め方sh.Cells(Rows.Count, 1).End(xlUp).Row + 1 『顧客毎』シートの合計行の求め方sh.Cells(Rows.Count, 1).End(xlUp).Row+.Cells(Rows.Count, 1).End(xlUp).Row-1『顧客毎』シートの合計行で集計値を求める計算式"=SUM(A" & sh.Cells(Rows.Count, 1).End(xlUp).Row + 1 & ":A" & sh.Cells(Rows.Count, 1).End(xlUp).Row+.Cells(Rows.Count, 1).End(xlUp).Row-2 & ")"これで聞かれている内容についてはヒントになるものは全て書けたと思います。ナイス1
###typ********さまご連絡ありがとうございます。また、コードの記入と詳細をご教授頂きまして有難うございます。Q列を写した対象がなかったので失礼いたしました。併せて載せておりますので御確認いただけますと助かります。ご回答頂きました、j = sh.Cells(Rows.Count, 1).End(xlUp).Row + 1で記入を変更した結果、しっかり記入されました。有難うございます。しかしながら、デバックになり、sh.Name = .Range("Q" & i).Valueの部分が黄色に塗りつぶされてしまいます。不具合なくシートが増えているのですが、私には、理由がわからないため、教えていただけますと助かります。教えていただきました、『顧客毎』シートの合計行で集計値を求める計算式"=SUM(A" & sh.Cells(Rows.Count, 1).End(xlUp).Row + 1 & ":A" & sh.Cells(Rows.Count, 1).End(xlUp).Row+.Cells(Rows.Count, 1).End(xlUp).Row-2 & ")"はどこに記入をしたら処理になりますでしょうか?###教えていただきまして有難うございました。次から次へと質問をしてしまい恐れ入りますが、何卒よろしくお願いします。ありがとうございました

 

TAG