VBA未删除空白单元格

时间:2017-05-04 07:12:24

标签: excel vba excel-vba

我一直在使用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我尝试了vbNullStringisEmpty() = TRUE,而所有这些都没有删除这些行。我在电子表格中直接使用了公式=ISBLANK(),结果是真的。

我注意到如果我多次运行代码,最后会删除我想要的所有行。我问自己为什么在第一次运行中没有删除它?感谢。

1 个答案:

答案 0 :(得分:0)

解决方案确实非常简单,只需要向后运行循环,就像paulsm4建议的那样。

我必须更改For i = 2 To nLines的{​​{1}}。

解释是,当VBA删除该行并将其向上移动时,计数器会递增并向下移动一行,"缺少" Peh解释说,有些线路。