Do While тут совершенно не нужен (он вообще мало где употребляется). Надо использовать For Next:
- Код: Выделить всё
'при таком цикле rwIndex будет меняться от 7 до номера строки
'последней НЕпустой ячейки столбца В
For rwIndex=7 To Worksheets(твой_лист).Range("B65535").End(xlUp).Row
...
Next rwIndex
или
- Код: Выделить всё
'при таком цикле rwIndex будет меняться от 7 до номера последней
'строки использованного на листе пространства.
For rwIndex=7 To Worksheets(твой_лист).UsedRange.Rows.Count
...
Next rwIndex
If Range("C" & rwIndex & ":" & "I" & rwIndex) = 0 Then
А на словах это условие как выглядит?
Если условие:
сумма ячеек данной строки в столбцах С:I = 0, то в коде оно выглядит:
- Код: Выделить всё
If Application.WorksheetFunction.Sum(Range(Cells(rwIndex,3),Cells(rwIndex,9))) = 0 Then
Можно, конечно, обращаться и так:
Range("C" & rwIndex & ":" & "I" & rwIndex)
, но тогда будет потеря по быстродействию из-за трех(!) операций конкатенации на каждом шаге.
Если условие:
все ячейки данной строки в столбцах C:I - пустые, то:
- Код: Выделить всё
If Application.WorksheetFunction.CountA(Range(Cells(rwIndex,3),Cells(rwIndex,9))) = 0 Then
P.S.: а переменные, по-хорошему, надо объявлять
- Код: Выделить всё
Dim rwIndex As Long
P.P.S.: практически все это можно сделать, не используя VBA. - Окно с сообщением тут обязательно? Если нет, то проще сделать условное форматирование с двумя условиями и вместо таблички строки, попадающие под эти два условия будут выделяться (цветом, шрифтом и т.д.). Быстро, легко, автоматически.