Excel VBA, вбудований для циклу FOR, щоб виключити комірки із зовнішнього умовного


0

Починаючи з наступного коду:

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

Є два способи вирішити проблему:

Використання ІФ

Просто додайте секунду, якщо вислів у циклі для циклу, і помістіть код всередину, що якщо. (див. 2 ​​окремі рядки в коді нижче, що додати)

Ваш код для циклу виглядатиме так:

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

Продовжуйте цикл for

Ви намагалися продовжити з першим циклом, але вихід просто виходить з цього циклу. Ви шукаєтеNext nextcell


Я відмовився від ідеї циклу For і просто використав ваш додатковий вислів If-then. мій інженерний розум потребує формувати ці логічні ідеї програміста в моєму мозку. Велике спасибі +1, якщо я міг би проголосувати
dasMetzger

Ласкаво просимо. Так, додатковий ІФ - це шлях, оскільки його можна легко розширити різними способами. З цієї причини я почав саме з цієї частини.
LPChip
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.