プロが教える店舗&オフィスのセキュリティ対策術

VBA初心者ですので用語間違い等はご容赦ください。
Vlookupしたときに#N/Aの行を削除する以下の処理を行いたいと思っています。
(一部公開用に改変しています)

Sub CCC()
With ThisWorkbook.Worksheets("sheet")
Dim endrow As Variant
endrow = .Cells(Rows.Count, 1).End(xlUp).row
.Range("I1:I" & endrow) = "=VLOOKUP(C1, table!B3:D1000, 3, FALSE)"
.Range("I1:I" & endrow).Value = .Range("I1:I" & endrow).Value
Dim i As Long
For i = endrow To Step -1
If IsError(.Cells(i, 9)) Then
Rows(i).Delete
End If
Next i
End Sub

このSubを単体で実行した場合は特に問題なく想定通りの動作になるのですが、
下記のように一連処理のため別SubからCallすると、なぜか対象の行がDeleteされず残ってしまいます。

sub main()
Call AAA
Call BBB
Call CCC
Call DDD
End Sub

本件について何か知見がある方いらっしゃいましたらご教示いただけますと幸いです。
よろしくお願いいたします。

質問者からの補足コメント

  • 誤りがありました。
    .Range("I1:I" & endrow).Value = .Range("I1:I" & endrow).Value
    で値に変換はしていません。

      補足日時:2021/12/16 19:59
教えて!goo グレード

A 回答 (1件)

こんばんは



どこまで正しい情報なのか不明ですけれど・・・

>For i = endrow To Step -1
これって、エラーになりませんか?

>Rows(i).Delete
アクティブシートの行が削除されると思いますけれど?
(対象としているシートとは限らない)
    • good
    • 0
この回答へのお礼

早速コメントありがとうございます!
ご指摘の通りアクティブシートが異なっていたのが原因でした。。
修正して改善できました。

お礼日時:2021/12/16 20:41

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング