Pertanyaan cepat.

Saya memiliki makro di bawah ini yang terlihat jika kolom B berisi nilai 0. Dalam hal itu, itu menghapus baris itu. Ini berfungsi dengan baik sampai ada contoh di mana tidak ada baris yang berisi nol, dan kemudian muncul kesalahan yang mengatakan itu di luar jangkauan.

Apakah mungkin untuk men-tweak ini sehingga berjalan tanpa kesalahan, dan tidak menghapus apa pun jika tidak dapat menemukan baris dengan 0 di Kolom B?

Sub Deletezero()

Dim LastRow As Long, ReadRow As Long, n As Long

With ThisWorkbook.Sheets("Sheet1")
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
End With

ReadRow = 1
For n = 1 To LastRow
  If Range("B" & ReadRow).Value Like "*0*" = True Then
      Range("H" & ReadRow).EntireRow.Delete
    Else
      ReadRow = ReadRow + 1
    End If
  Next
End Sub
0
Codegameproper 12 Mei 2021, 21:16

1 menjawab

Jawaban Terbaik

Silakan, coba kode berikutnya. Itu harus lebih cepat dari milik Anda, menghapus semua baris (jika ada yang akan dihapus) sekaligus, di akhir. Bahkan, kode hanya memilih baris. Jika pilihan sudah benar, harap ganti Select dengan Delete:

Sub Deletezero()
 Dim sh As Worksheet, LastRow As Long, n As Long, rngDel As Range

 Set sh = ThisWorkbook.Sheets("Sheet1")
 LastRow = sh.cells(sh.rows.count, "B").End(xlUp).row

 For n = 1 To LastRow
   If sh.Range("B" & n).Value Like "*0*" Then
        If rngDel Is Nothing Then
            Set rngDel = sh.Range("B" & n)
        Else
            Set rngDel = Union(rngDel, sh.Range("B" & n))
        End If
     End If
 Next
 If Not rngDel Is Nothing Then rngDel.EntireRow.Select 'if it selects what you need, please replace Select with Delete
End Sub
0
FaneDuru 12 Mei 2021, 18:36