我是新来的VBA excel,我坚持一个小问题。我有一个数据列表,我有两个任务要完成。运行时错误91对象变量或块变量未设置
第一个将删除J列中任何等于0的值的行;
第二部分:我想遍历剩余的行并删除I列中的值大于值J列中的任何行。
不过,我发现了以下错误:VBA运行时错误91对象变量或带块变量未设置
这是各国行:
For rw = .Cells(rows.Count, "E").End(xlUp).Row To 2 Step -1
完整的代码
Private Sub clearupdata_Click()
Dim rows As Range, OSQty As Range, value As Long, rw As Long
Set OSQty = Range("j2")
Do Until OSQty.value = ""
value = Val(OSQty.value)
If (value = 0) Then
If rows Is Nothing Then
Set rows = OSQty.EntireRow
Else
Set rows = Union(OSQty.EntireRow, rows)
End If
End If
Set OSQty = OSQty.Offset(1)
Loop
If Not rows Is Nothing Then rows.Delete
With Worksheets(1) '<~~ worksheet ~~>
For rw = .Cells(rows.Count, "E").End(xlUp).Row To 2 Step -1
If .Cells(rw, "I").Value2 > .Cells(rw, "J").Value2 Then
.rows(rw).EntireRow.Delete
End If
Next rw
End With
End Sub
使用'rows'作为一个Range对象变量名是不是一个好主意因为barrowc表示已经在应用程序,工作表和范围对象 – barrowc
上定义了'Rows'属性,rows.count可能会认为它是名为rows的范围变量。我尝试重命名它的工作范围 –