programing

VBA에서 셀의 색을 채우는 방법은 무엇입니까?

subpage 2023. 8. 27. 09:18
반응형

VBA에서 셀의 색을 채우는 방법은 무엇입니까?

현재 시트에 "#N/A" 값이 있는 셀에 색상을 지정하고 싶습니다.이를 위해 다음 매크로를 사용합니다.

Sub ColorCells()

Dim Data As Range
Dim cell As Range
Set currentsheet = ActiveWorkbook.Sheets("Comparison")
Set Data = currentsheet.Range("A2:AW1048576")

For Each cell In Data
If cell.Value = "#N/A" Then
   cell.Interior.ColorIndex = 3
End If
Next

End Sub

하지만 그 선은If cell.Value = "#N/A" Then오류 발생:형식이 일치하지 않습니다.오류가 어디에 있는지 이해하는 데 도움을 줄 수 있는 사람이 있을까요?감사해요.

비 VBA 솔루션:

다음 공식과 함께 조건부 형식 지정 규칙 사용:=ISNA(A1)(모든 오류가 있는 셀 강조 표시 - 뿐만 아니라#N/A,사용하다=ISERROR(A1))

enter image description here

VBA 솔루션:

코드는 50mln 셀을 순환합니다.세포의 수를 줄이기 위해, 저는 사용합니다..SpecialCells(xlCellTypeFormulas, 16)그리고..SpecialCells(xlCellTypeConstants, 16)오류가 있는 셀만 반환(참고, 사용 중)If cell.Text = "#N/A" Then)

Sub ColorCells()
    Dim Data As Range, Data2 As Range, cell As Range
    Dim currentsheet As Worksheet

    Set currentsheet = ActiveWorkbook.Sheets("Comparison")

    With currentsheet.Range("A2:AW" & Rows.Count)
        .Interior.Color = xlNone
        On Error Resume Next
        'select only cells with errors
        Set Data = .SpecialCells(xlCellTypeFormulas, 16)
        Set Data2 = .SpecialCells(xlCellTypeConstants, 16)
        On Error GoTo 0
    End With

    If Not Data2 Is Nothing Then
        If Not Data Is Nothing Then
            Set Data = Union(Data, Data2)
        Else
            Set Data = Data2
        End If
    End If

    If Not Data Is Nothing Then
        For Each cell In Data
            If cell.Text = "#N/A" Then
               cell.Interior.ColorIndex = 4
            End If
        Next
    End If
End Sub

참고, 오류가 있는 셀을 강조 표시하는 방법(뿐만 아니라)"#N/A"), 다음 코드를 바꿉니다.

If Not Data Is Nothing Then
   For Each cell In Data
       If cell.Text = "#N/A" Then
          cell.Interior.ColorIndex = 3
       End If
   Next
End If

와 함께

If Not Data Is Nothing Then Data.Interior.ColorIndex = 3

UPD: (VBA를 통해 CF 규칙을 추가하는 방법)

Sub test()
    With ActiveWorkbook.Sheets("Comparison").Range("A2:AW" & Rows.Count).FormatConditions
        .Delete
        .Add Type:=xlExpression, Formula1:="=ISNA(A1)"
        .Item(1).Interior.ColorIndex = 3
    End With
End Sub
  1. 오류를 강조 표시하려면 VBA 대신 조건부 형식을 사용합니다.

  2. 게시한 것과 같은 VBA 루프를 사용하면 처리하는 데 시간이 오래 걸립니다.

  3. 진술서If cell.Value = "#N/A" Then절대 안 될 겁니다VBA를 사용하여 오류를 강조 표시해야 하는 경우 대신 이 작업을 수행하십시오.

    하위 색 셀()

    Dim Data As Range
    Dim cell As Range
    Set currentsheet = ActiveWorkbook.Sheets("Comparison")
    Set Data = currentsheet.Range("A2:AW1048576")
    
    For Each cell In Data
    
    If IsError(cell.Value) Then
       cell.Interior.ColorIndex = 3
    End If
    Next
    
    End Sub
    
  4. 시술이 5,100만 개의 셀을 순환하므로 긴 대기 시간에 대비해야 합니다.

  5. 여러분이 하고 싶은 것을 성취할 수 있는 더 효율적인 방법들이 있습니다.마음이 바뀌면 질문을 업데이트합니다.

  1. 왼쪽 상단 모서리를 기준으로 모든 셀 선택
  2. [Home] >> [Conditional Formating] >> [New Rule]을 선택합니다.
  3. [포함하는 셀만 형식 지정]을 선택합니다.
  4. [다음을 사용하여 셀만 형식 지정:]에서 "오류"를 선택합니다.
  5. [Format]에서 올바른 형식을 선택합니다.] 버튼

당신은 셀을 사용해야 합니다.셀 대신 텍스트 = "#N/A"입니다.값 = "#N/A"입니다.셀의 오류는 실제로 셀에 저장된 텍스트일 뿐입니다.

언급URL : https://stackoverflow.com/questions/22193415/how-to-fill-color-in-a-cell-in-vba

반응형