• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで転記すると#REF!に)

VBAで転記すると#REF!に

このQ&Aのポイント
  • VBAで転記すると#REF!になってしまう現象が発生しています。
  • マクロで請求書から売上表にデータを転記する際に、5行が反転しながらエラーが発生します。
  • 考えられる原因は、マクロのコードやH列の数式に不都合がある可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 補足を拝見しました。 結局「行削除」が他の列にも影響しているみたいですね。 前の質問が単にL5~O9セルの空白以外をコピー&ペーストだったので 数式によって空白になっているセルを後から削除するようにしたためにこのような問題が起きていると思われます。 根本的に変えた方が良いみたいなので、 ↓のコードにしてみてください。 Sub 転記() Dim i As Long, wS As Worksheet Set wS = Worksheets("売上表") With Worksheets("納請書1") For i = 5 To 9 '★5~9行までループ If .Cells(i, "L") <> "" Then .Cells(i, "L").Resize(, 4).Copy wS.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues End If Next i Application.CutCopyMode = False End With End Sub ※ 単純に「納請書1」シートのL列5行目から9行目までループさせ L列が空白以外のデータを「売上表」シートのA列最終行以降にコピー&ペーストしています。 これではどうでしょうか?m(_ _)m

dorasuke
質問者

お礼

おはようございます。 大変ご苦労をお掛けしました。 上手くできて今は感謝感激です。 やったぁ~という気持です。 本当にありがとうございました。 これに懲りずに今後ともよろしくお願いいたします。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! ↓のサイトの関連質問ですね。 http://okwave.jp/qa/q8832489.html 前回回答した責任があると思いますので、投稿します。 セルを削除すると参照するセルがなくなってしまうために起こるエラーだと思います。 そこで手っ取り早く、数式を入れ直してみてはどうでしょうか? それをマクロで行います。 ↓のコードにしてみてください。 Sub 売上表転記1() Dim i As Long, lastRow As Long, wS As Worksheet '★変数を追加 Set wS = Worksheets("売上表") Worksheets("納請書1").Range("L5:R9").Copy wS.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False For i = wS.Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1 If WorksheetFunction.CountIf(wS.Cells(i, "A").Resize(, 4), "") = 4 Then wS.Cells(i, "A").Resize(, 4).Delete shift:=xlUp '▼ココから追加(H列の数式を入れ直す) lastRow = wS.UsedRange.Rows.Count Range(wS.Cells(2, "H"), wS.Cells(lastRow, "H")).Formula = _ "=IFERROR(IF(MONTH(A2)=MONTH(A3),"""",SUMPRODUCT((MONTH(OFFSET($A$2,0,0,COUNT(A:A)))=MONTH(A2))*OFFSET($E$2,0,0,COUNT(A:A)))),"""")" End If Next i End Sub ※ 安直な方法ですが、 H列の数式をそのまま利用し、エラーの場合は空白にする数式にしています。 こんな感じではどうでしょうか?m(_ _)m

dorasuke
質問者

補足

早速のご指導有難うごさいます。 試した結果を下記の通りにご報告いたします。 元の「請求書1」で記入する行は5ですが目一杯の5行が埋まっているとエラーは出ません。 但し5行より少ない行数でこのエラーが発生します。 入力した5行を除く1~4行でも5行分が反転したところです。 H列の月毎小計 REFはでなくなりました。 H2 =IFERROR(IF(MONTH(A2)=MONTH(A3),"",SUMPRODUCT((MONTH(OFFSET($A$2,0,0,COUNT(A:A)))=MONTH(A2))*OFFSET($E$2,0,0,COUNT(A:A)))),"") 下記の作業列でエラーが出ます。 I2 入金 =IF(AO2="","",IF(COUNTIFS(入金!$I$2:$I$200,AO2)>=1,"入金済",""))   AO2 =IF(A2="","",TEXT(A2,"mm")&B2) 作業列 M2 ID =IF(COUNT($AJ$1:$AJ$201)<ROW($A1),"",INDEX($B$1:$B$189,SMALL($AJ$1:$AJ$201,ROW($A1)))) AJ2 =IF(F2="","",IF(AND(TEXT($A2,"yyyymm")-$K$1*100-K$2=0,COUNTIFS($A$2:$A2,">"&DATE($K$1,K$2,0),$A$2:$A2,"<"&DATE($K$1,K$2+1,1),$B$2:$B2,$B2)=1),ROW(),"")) 作業列 N2 会社名 =IF(M2="","",VLOOKUP(M2,顧客管理,2,FALSE)) & "" O2 件数 =IF(AK2="","",SUMPRODUCT(($B$2:$B$201=$M2)*($AK$2:$AK$201=$K$4)))   AK2 =IF(A2="","",TEXT(YEAR(A2),"0000")&TEXT(MONTH(A2),"00")) 作業列 P2 当月売上 =IF(M2="","",SUMIF($AL:$AL,TEXT($AL$1,"yymm")&$M2,$E:$E))   AL2 =IF(A2="","",TEXT(A2,"yymm")&B2) 作業列