Excel VBA для каждого цикла занимает 2 шага одновременно - PullRequest
0 голосов
/ 13 июля 2009

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

For Each row In ws.Rows
    If IsEmpty(row.Cells(row.row, 1)) Then
        Exit For
    Else
        MsgBox row.Cells(row.row, 1).value
    End If
Next

Заранее спасибо за ваши ответы!

Ответы [ 2 ]

2 голосов
/ 13 июля 2009

Вместо ссылки на Row.Cells обратитесь к Worksheet.Cells. Кроме того, вы можете выбрать ActiveRange на рабочем листе, что должно предотвратить множество ненужных строк в вашем for-each.

Проверьте MSDN для примеров на этом.

0 голосов
/ 13 июля 2009

Установка ws в Range с диапазоном ячеек B1: B10, которые содержат значения 1-10 соответственно, даст желаемый результат:

Sub Macro1 () Dim WS As Range

Set ws = Range ("B1: B10")

для каждой строки в ws.Rows

If IsEmpty(ws.Cells(Row.Row, 1)) Then
    Exit For
Else
    MsgBox ws.Cells(Row.Row, 1).Value
End If

Далее

End Sub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...