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)
)
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
오류를 강조 표시하려면 VBA 대신 조건부 형식을 사용합니다.
게시한 것과 같은 VBA 루프를 사용하면 처리하는 데 시간이 오래 걸립니다.
진술서
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
시술이 5,100만 개의 셀을 순환하므로 긴 대기 시간에 대비해야 합니다.
여러분이 하고 싶은 것을 성취할 수 있는 더 효율적인 방법들이 있습니다.마음이 바뀌면 질문을 업데이트합니다.
- 왼쪽 상단 모서리를 기준으로 모든 셀 선택
- [Home] >> [Conditional Formating] >> [New Rule]을 선택합니다.
- [포함하는 셀만 형식 지정]을 선택합니다.
- [다음을 사용하여 셀만 형식 지정:]에서 "오류"를 선택합니다.
- [Format]에서 올바른 형식을 선택합니다.] 버튼
당신은 셀을 사용해야 합니다.셀 대신 텍스트 = "#N/A"입니다.값 = "#N/A"입니다.셀의 오류는 실제로 셀에 저장된 텍스트일 뿐입니다.
언급URL : https://stackoverflow.com/questions/22193415/how-to-fill-color-in-a-cell-in-vba
'programing' 카테고리의 다른 글
PHP의 다중 줄 문자열 리터럴 (0) | 2023.08.27 |
---|---|
div의 배경 이미지 url을 받을 수 있습니까? (0) | 2023.08.27 |
최신 브라우저에서 허용되는 보류 중인 에이잭스 요청 수는 몇 개입니까? (0) | 2023.08.27 |
Swift UI에서 Object Object와 State Object의 차이점은 무엇입니까? (0) | 2023.08.27 |
Parse as PFFile에 업로드하기 전에 이미지 크기를 줄이는 압축 방법? (Swift) (0) | 2023.08.22 |