Начиная со следующего кода:

Dim lastRow As Long
    With ActiveSheet
       lastRow = .Range("C" & .Rows.Count).End(xlUp).Row
    End With

Dim HeadCell As Range
    For Each HeadCell In Range("C1:C" & lastRow)

    If Len(HeadCell) < 6 And Len(HeadCell) > 1 Then

        HeadCell.Select

        With Selection.Font
            .Bold = True
            .Underline = xlUnderlineStyleSingle
        End With

    Else
    End If

    ActiveCell.Offset(1, 0).Select
    Next

Это работает так, как я ожидал. Он проходит через мой столбец сканирования листа "C" для значений определенной длины, а затем форматирует его соответствующим образом. Я бы предпочел, чтобы он проверял, было ли в ячейке какое-либо другое конкретное значение, и, если это правда, игнорировал требование форматирования и переходил к следующей ячейке, как обычно

Я думал, что добавление встроенного цикла For сделает это, но моя логика должна быть неправильной, потому что он по существу полностью игнорирует цикл For и запускает его как обычно.

If Len(HeadCell) < 6 And Len(HeadCell) > 1 Then
        For i = 1 To 99
            If HeadCell = i Then
                Exit For
            End If
        Next i

Я на самом деле ищу игнорировать ячейки, которые имеют значения от 1 до 99. Это не опечатка. Если HeadCell имеет значение от 1 до 99, игнорируйте форматирующую часть исходного условного выражения и переходите к следующей ячейке.

1 ответ1

1

Есть 2 способа решения проблемы:

Использование IF

Просто добавьте второй оператор if в ваш цикл for и поместите код внутри него, если. (см. 2 отдельные строки в коде ниже для того, что добавить)

Ваш код цикла for будет выглядеть так:

For Each HeadCell In Range("C1:C" & lastRow)

If Len(HeadCell) < 6 And Len(HeadCell) > 1 Then
   if HeadCell <= 0 OR HeadCell >= 100 then  
        HeadCell.Select

        With Selection.Font
            .Bold = True
            .Underline = xlUnderlineStyleSingle
        End With
   End If
Else
End If

ActiveCell.Offset(1, 0).Select
Next

Продолжайте цикл

Вы пытались продолжить с первого цикла, но выход только для выхода из этого цикла. Вы ищете Next nextcell

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