• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロでテーターを転記した時の空白なしに)

マクロでデータを転記する際の空白の処理方法

このQ&Aのポイント
  • マクロを使用して請求書のデータを売上表に転記する際、空白行の処理が必要です。
  • 請求書の範囲内のデータが1行〜4行の場合、5行目以降は空白となります。
  • 提供されたマクロの構文を使用してデータを転記することができます。

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

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

続けてお邪魔します。 >Module7 に入れていてこれ以外はありません。 >同じ内容のエラーが出ます。 というコトは「インデックスが有効範囲にありません」というエラーになるのでしょうか? ん~~~ やはりシート名に関するエラーのような感じがしますが・・・ とりあえず前回のコードを少し変更してみました。 (★印の行だけです) Sub 転記2() Dim i As Long, wS As Worksheet Set wS = Worksheets("売上表") Worksheets("納請書1").Range("L5:O9").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 End If Next i End Sub ※ Usedrangeを使わずにA列で最終行を取得するようにしています。 ※ シートモジュールではなく、 必ずAlt+F11キー → メニュー → 挿入 → 「標準モジュール」にコードを記載してください。 これでもエラーになる場合、原因は判りかねます。m(_ _)m 

dorasuke
質問者

お礼

ありがとうございました。 御迷惑とご手数おかけしました。

dorasuke
質問者

補足

おはようございます。 今朝気合を入れて色々試しながらやり直しました。 マクロはNo1の構文でうまくできました。 売上表 納請書 のそれぞれのシートを新たに再作成したところうまくできました。 御迷惑とご手数おかけしました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

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

No.1です。 >※Worksheets("請求書").Range("L5:O9").Copy >シート名は「納請書1」なので下記のように変更しました。 >Worksheets("納請書1").Range("L5:O9").Copy こちらでもシート名を「納請書1」に訂正してマクロを実行してみました。 ちゃんと「納請書1」のL5~O9セルが「売上表」シートのA列以降に表示できました。 ※ 当方の解釈としては、単に「納請書1」シートのL5:O9セルを「表示表」シートのA列に 「値」として貼り付け、”空白に見える行”を削除しているだけですが、 そのほか細かい設定があるのでしょうか? 標準モジュールにコードを記載していますか? そうであれば エラー原因としてはおそらくシート名だけの問題のような気がします。 この程度でごめんなさい。m(_ _)m

dorasuke
質問者

補足

何度もすみません。 Module7 に入れていてこれ以外はありません。 同じ内容のエラーが出ます。 Sub 転記() Dim i As Long, lastRow As Long, wS As Worksheet Set wS = Worksheets("売上表") lastRow = wS.UsedRange.Rows.Count Worksheets("納請書1").Range("L5:O9").Copy wS.Cells(lastRow, "A").Offset(1).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False For i = wS.UsedRange.Rows.Count To 2 Step -1 If WorksheetFunction.CountIf(wS.Cells(i, "A").Resize(, 4), "") = 4 Then wS.Cells(i, "A").Resize(, 4).Delete shift:=xlUp End If Next i End Sub

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 「請求書」シートのL5~O9セルデータを「売上表」シートに上詰めで標示すれば良い訳ですよね? Sub Sample1() Dim i As Long, lastRow As Long, wS As Worksheet Set wS = Worksheets("売上表") lastRow = wS.UsedRange.Rows.Count Worksheets("請求書").Range("L5:O9").Copy wS.Cells(lastRow, "A").Offset(1).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False For i = wS.UsedRange.Rows.Count To 2 Step -1 If WorksheetFunction.CountIf(wS.Cells(i, "A").Resize(, 4), "") = 4 Then wS.Cells(i, "A").Resize(, 4).Delete shift:=xlUp End If Next i End Sub ※ セルの表示形式はあらかじめ設定しておいてください。 こんな感じではどうでしょうか?m(_ _)m

dorasuke
質問者

補足

早速のご指導ありがとうございます。 御指導を試させていただいたら下記のごとくエラーがでました。 再度ご指導願えませんでしょうか。 実行時エラー'9': インデックスが有効範囲にありません。 下記の構文に黄色で反転しています。     ※Worksheets("請求書").Range("L5:O9").Copy      シート名は「納請書1」なので下記のように変更しました。 Worksheets("納請書1").Range("L5:O9").Copy

すると、全ての回答が全文表示されます。

関連するQ&A