Excel VBA删除行如果拼写错误的Word

Fre*_*III 2 excel vba excel-vba

如果单元格包含拼写错误的单词,我试图删除整行.如果删除了一行,则跳过一行,从而丢失可能在另一行之后直接出现的拼写错误的单词.

这是代码:

Sub DeleteMispelledCells()
For Each cl In ActiveSheet.UsedRange
If Not Application.CheckSpelling(Word:=cl.Text) Then _
cl.EntireRow.Delete
Next cl
End Sub
Run Code Online (Sandbox Code Playgroud)

我理解问题是cl没有考虑到当前行已被删除,但我不知道如何纠正这一点.我也知道如果循环从最后一行跑到第一行而不是从第一行到最后一行,它也会被纠正.但是,我也不知道该怎么做.

eir*_*ude 5

为了以相反的顺序遍历每一行,你将做这样的事情:

Sub DeleteMispelledCells()
  Dim lRow As Long, cl As Range

  With ActiveSheet
    For lRow = .UsedRange.Rows.Count To 1 Step -1
      For Each cl In .Rows(lRow)
        If Not IsEmpty(cl) Then
          If Not Application.CheckSpelling(Word:=cl.Text) Then
            cl.EntireRow.Delete
            Exit For
          End If
        End If
      Next cl
    Next lRow
  End With
End Sub
Run Code Online (Sandbox Code Playgroud)

我并非100%确定我已经掌握了所有语法,因为我不是在我可以测试它的计算机上,但它至少应该给你一个开始的地方.

  • `For Each cl In .Row(lRow)`应该是`For Each cl In .Rows(lRow)`并且它在我的机器上运行良好.区别在于`.Row`与`.Rows`. (2认同)