我一直在使用IF条件在电子表格中找到空白单元格,然后删除我不想要的行部分并移动其他单元格。它进展顺利,但是当我使用这个数据库时,代码不会删除某些行。
以下是查找和删除部分行的部分:
Dim wb As Workbook
Dim Disciplinas As Worksheet
Set wb = ThisWorkbook
Set Disciplinas = wb.Sheets("Disciplinas")
Dim start_time As range
Dim i As Integer, nLines As Integer
nLines = Disciplinas.Cells(Rows.Count, 2).End(xlUp).Row
Set start_time = Disciplinas.Rows(1).Find(what:="HR_INICIO", LookIn:=xlValues, lookat:=xlWhole)
For i = 2 To nLines
If Disciplinas.Cells(i, start_time.Column) = "" Then
Disciplinas.Cells(i, 2).Resize(, 13).Delete Shift:=xlUp
End If
Next
这是文件:Spreadsheet(我遇到问题的单元格是E105到E125。其他的单元格在第一次运行代码时已被删除。)
而不是If Disciplinas.Cells(i, start_time.Column) = "" Then
我尝试了vbNullString
和isEmpty() = TRUE
,而所有这些都没有删除这些行。我在电子表格中直接使用了公式=ISBLANK()
,结果是真的。
我注意到如果我多次运行代码,最后会删除我想要的所有行。我问自己为什么在第一次运行中没有删除它?感谢。
答案 0 :(得分:0)
解决方案确实非常简单,只需要向后运行循环,就像paulsm4建议的那样。
我必须更改For i = 2 To nLines
的{{1}}。
解释是,当VBA删除该行并将其向上移动时,计数器会递增并向下移动一行,"缺少" Peh解释说,有些线路。