Я пытаюсь удалить всю строку, если ячейка содержит слово с ошибкой. Если строка удалена, пропускается строка, поэтому отсутствуют любые слова с ошибками, которые могут возникать непосредственно за другим.Excel VBA Delete Row If Misspelled Word
Вот код:
Sub DeleteMispelledCells()
For Each cl In ActiveSheet.UsedRange
If Not Application.CheckSpelling(Word:=cl.Text) Then _
cl.EntireRow.Delete
Next cl
End Sub
Я понимаю, что проблема заключается в сле не принимая во внимание, что текущая строка была удалена, но я не знаю, как это исправить. Я также знаю, что если цикл пробежал от последней строки до первой, а не от первой до последней, это также было бы исправлено. Однако я не знаю, как это сделать.
'Для каждого cl In .Row (lRow)' должно быть 'Для каждого cl In .Rows (lRow)', и он отлично работает на моей машине. Разница заключается в '.Row' против' .Rows'. – Soulfire
@JoshuaRoss Спасибо за тестирование, исправлено сейчас. – eirikdaude
Нет проблем, я рассматривал только редактирование для вас, но вам нужно изменить более 1 символа^_^ – Soulfire