Я перебираю некоторые ячейки по вертикали в Excel и затем передаю эту ячейку в качестве параметра для процедуры.Объект, требующий ошибки при переходе по ячейкам при выборе
Я сделал это таким образом, поэтому у меня нет содержимого ProcessCells дважды, в коде, один раз для цикла while и второй раз в цикле For.
Если я попытаюсь получить значение ячейки, выписанной, в цикле for она работает. Если я поместил содержимое процедуры ProcessCells в цикл for, он также будет работать.
Но если я стараюсь передать его в качестве параметра, в ProcessCells, я получаю сообщение об ошибке
«Объект Обязательный»
Вот код, если вы хотите, чтобы проверить его из:
Sub loopThroughCells()
Dim c As Range
Dim autoSelect As String
Dim X, Y As Integer
autoSelect = Cells(3, 2).Value
If StrComp(autoSelect, "Y") = 0 Then
Y = 5
X = 4
While Not IsEmpty(Cells(Y, X).Value)
ProcessCells (Cells(Y, X))
Y = Y + 1
Wend
Else
For Each c In Selection
ProcessCells (c)
Next c
End If
End Sub
Sub ProcessCells(ce As Range)
End Sub
Как
Клетки (п, м)
отличается от
С в селекции
?
Ошибка возникает в цикле For, но это не происходит в цикле while.
Вероятно, это должно быть 'Для каждого cIn Selection.Cells' (и вам следует избегать использования' Select' как можно больше. Также см. этот документ: http://stackoverflow.com/documentation/vba/7363/pass-arguments-byref-or-byval # t = 201701181030371271291 – R3uK
Спасибо, но, к сожалению, это не решило проблему. –
Вы меняете ячейки в 'ProcessCells'? Поскольку вы не можете изменить значение элемента в цикле 'For Every' (я знаю, это боль ...) – R3uK