重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VBAでシートの値をコピーして別シートの最終行に追加するようVBAで作業を進めていますが、コピー先の見出し行に結合セルがあるとエラーを返してきます。コピー元は"作業フォルダ"、コピー先は"記録"のC5からENDまで、見出し範囲はA1~U4まで。いろいろ見出し範囲を回避するべく試してみたのですがうまく行きません。どうかご教授のほどよろしくお願いします。

Dim LastRow1 As Long
Dim LastRow2 As Long
LastRow1 = Sheets("作業フォルダ").Range("a" & Rows.Count).End(xlUp).Row
LastRow2 = Sheets("記録").Range("c" & Rows.Count).End(xlUp).Row
Sheets("作業フォルダ").Range("ao3:az" & LastRow1).Copy Sheets("記録").Cells(LastRow2 + 1, 3)
'
Sheets("記録").Select
Columns("C*C").Select
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Columns("D:D").Select
Selection.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Columns("E:E").Select
Selection.TextToColumns Destination:=Range("E1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True

A 回答 (1件)

こんにちは、


なさりたい事を理解できていませんが、

Sheets("作業フォルダ").Range("ao3:az" & LastRow1).Copy Sheets("記録").Cells(LastRow2 + 1, 3) でエラーになるのでしょうか?
結合セルの為、エラーが返るのなら
LastRow2 = Sheets("記録").Range("c" & Rows.Count).End(xlUp).Row
は、最終行を示していないと言う事でしょうか?
もし、C列空白行以下のセルが結合セルになっているのであれば、結合セルにしてく必要が無いと思いますので、解除すれば良いように思います。手作業で解除するも良いと思いますし、VBAなら、
掲示のコードを使う場合、
LastRow1 = Sheets("作業フォルダ").Range("A" & Rows.Count).End(xlUp).Row
LastRow2 = Sheets("記録").Range("C" & Rows.Count).End(xlUp).Row
Sheets("記録").Range("C" & LastRow2 + 1 & ":N" & LastRow2 + 1 + LastRow1 - 3).UnMerge
Sheets("作業フォルダ").Range("AO3:AZ" & LastRow1).Copy Sheets("記録").Cells(LastRow2 + 1, 3)
ペースト先範囲をこんな感じで解除しても良さそうです。

Sheets("記録").Select 以下に関しては、データ内容が分らないので、何とも言えませんが、Tab:=Trueなのに、C、D、E列と続けてしまってよいのかなと思いました。また、データを追加していくような処理であれば、列全体を対象にしなくても良さそうな、、感じですかね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!