Vba 我的 for 循环只删除了一半的行
Vba my for loop deletes only half of rows
我正在为投注计算做一个宏。我有以下双 for 循环,用于删除与 if 匹配的行,但它只删除真正匹配的行的一半
Sub calc()
Dim db As String
db = Worksheets("PRONO").Range("A1").Value
Dim alldata As Workbook
Dim i1 As Worksheet
Set alldata = Workbooks(db)
Set i1 = alldata.Worksheets("I1")
For Each Match In Workbooks("BET EXCEL.xlsm").Worksheets("TEST").Range("A14:" & Range("A14").End(xlDown).Address)
For Each Data In i1.Range("B2:" & i1.Range("B2").End(xlDown).Address)
If CDate(Data.Value) > CDate(Match.Value) Then
MsgBox (Data.Row)
i1.Rows(Data.Row).Delete
End If
Next
Next
End Sub
为什么?
看不懂
如果有人可以帮助我
这个很简单。当你删除时,比方说,第五行,下面的所有行都会上升。所以,第六排现在是第五排。但是你的循环转到了最近的第六个(以前的第七个),跳过了这个曾经是第六个的循环。
使用 FOR i = lastRow to 1 STEP -1
向上删除行。
(啊,lastRow必须先算出来)
我正在为投注计算做一个宏。我有以下双 for 循环,用于删除与 if 匹配的行,但它只删除真正匹配的行的一半
Sub calc()
Dim db As String
db = Worksheets("PRONO").Range("A1").Value
Dim alldata As Workbook
Dim i1 As Worksheet
Set alldata = Workbooks(db)
Set i1 = alldata.Worksheets("I1")
For Each Match In Workbooks("BET EXCEL.xlsm").Worksheets("TEST").Range("A14:" & Range("A14").End(xlDown).Address)
For Each Data In i1.Range("B2:" & i1.Range("B2").End(xlDown).Address)
If CDate(Data.Value) > CDate(Match.Value) Then
MsgBox (Data.Row)
i1.Rows(Data.Row).Delete
End If
Next
Next
End Sub
为什么?
看不懂
如果有人可以帮助我
这个很简单。当你删除时,比方说,第五行,下面的所有行都会上升。所以,第六排现在是第五排。但是你的循环转到了最近的第六个(以前的第七个),跳过了这个曾经是第六个的循环。
使用 FOR i = lastRow to 1 STEP -1
向上删除行。
(啊,lastRow必须先算出来)