조건부 외부에서 셀을 제외하는 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"를 통해 서식을 지정합니다. 내가 선호하는 것은 셀이 다른 특정 값인지 확인하고 true 인 경우 서식 요구 사항을 무시하고 평소대로 다음 셀로 넘어갑니다.

임베디드 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

이 문제를 해결하는 두 가지 방법이 있습니다.

IF 사용

for 루프에 두 번째 if 문을 추가하고 if 안에 코드를 넣으십시오. (추가 할 내용은 아래 코드에서 별도의 두 줄을 참조하십시오)

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

for 루프에서 계속

첫 번째 루프를 계속하려고했지만 종료하면 해당 루프가 종료됩니다. 당신이 찾고있는Next nextcell


For 루프 아이디어를 버리고 추가 If-Then 문을 사용했습니다. 내 공학적 사고는 내 두뇌에 이러한 프로그래머 논리 아이디어를 구축해야합니다. 내가 투표 할 수 있다면 많은 감사 +1
dasMetzger

천만에요. 그렇습니다. 추가 IF는 다양한 방법으로 쉽게 확장 할 수있는 방법입니다. 그런 이유로 나는 그 부분부터 시작했다.
LPChip
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.