Может кто-нибудь объяснить, почему этот код возвращает ошибку времени выполнения «91»?

Dim rng As Range, cell As Range

Set rng = Selection

For Each cell In rng

Next cell

If Not cell.HasFormula Then

End If

cell.Value = WorksheetFunction.Proper(cell.Value)

1 ответ1

2
For Each cell In rng

Next cell

Это пошагово проходит через каждый элемент выбранного диапазона и ничего не делает. Когда цикл завершен, то есть код прошел через каждый элемент, значение, сохраненное в cell объекта, очищается.

If Not cell.HasFormula Then

End If

Теперь cell является пустой переменной, то есть ее значение равно Nothing . Nothing не имеет никаких свойств, в частности, оно не имеет свойства HasFormula

Код, который, я думаю, вам нужен:

For Each cell In rng
    If Not cell.HasFormula Then
        cell.Value = WorksheetFunction.Proper(cell.Value)
    End If
Next cell

Я должен добавить, что я не проверял, действительно ли этот код будет работать. Это просто "правильный" порядок выполнения написанных вами команд.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .