[英]Excel VBA - delete cell with time value less then
我正在尝试根据“J”列中的时间值删除特定范围。 到目前为止,我得到了这个:
Dim wb As Workbook
Dim c As Range
Dim zakres As Range
Dim zakres2 As Range
Dim all As String
Dim all2 As Range
Dim ile As String
Dim czas As Range
Set wb = ThisWorkbook
Set czas = wb.Worksheets("Dane").Range("J2")
ile = Application.WorksheetFunction.CountA(wb.Worksheets("Dane").Range("L:L"))
For i = 1 To ile
If czas.Value < "00:01:00" Then
Set zakres = czas.Offset(0, 0)
Set zakres2 = czas.Offset(0, 2)
all = zakres.Address & ":" & zakres2.Address
Set all2 = Range(all)
all2.Delete Shift:=xlUp
Else
Set czas = czas.Offset(1, 0)
End If
Next i
If czas.Value < "00:01:00" Then
我收到 424 运行时错误 - 需要 Object。 这让我很困惑,因为变量czas
已经被声明了......
任何想法为什么会发生以及如何处理它?
当您删除包含范围czas
的行时,您也会删除该范围 object。 null 范围没有属性.value
这就是为什么您会收到 object required 错误。
批量删除范围 object 的一个好方法是使用union
创建非连续范围,然后一次将它们全部删除。 这样可以避免在循环中移动行的怪异之处,并且还会显着提高速度,因为删除非常昂贵。
Dim wb As Workbook
Dim c As Range
Dim zakres As Range
Dim zakres2 As Range
Dim ile As String
Dim czas As Range
Dim i As Long
Dim delrng As Range
Set wb = ThisWorkbook
Set czas = wb.Worksheets("Dane").Range("J2")
ile = Application.WorksheetFunction.CountA(wb.Worksheets("Dane").Range("L:L"))
For i = 1 To ile
If czas.Value < "00:01:00" Then
Set zakres = czas.Offset(0, 0)
Set zakres2 = czas.Offset(0, 2)
If delrng Is Nothing Then
Set delrng = Range(zakres, zakres2)
Else
Set delrng = Union(delrng, Range(zakres, zakres2))
End If
End If
Set czas = czas.Offset(1, 0)
Next i
If Not delrng Is Nothing Then
delrng.Delete
end if
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.