2016-11-28 4 views
0

오늘 VBA를 처음 다루었습니다. 약 2 시간의 연구 끝에 나는 포기하고이 질문에 답하는 것을 끝내기 시작했다.이 질문은 오히려 간단하다.VBA : 값에 따라 특정 열의 색상 셀

필자는 필자가 특정 "Percentage"라는 제목으로 열을 검색한다. 이 열을 찾은 후에는 값에 따라 셀의 색을 지정하고 싶습니다. (> 1 개, 녹색, < 0.9 빨간색, < 1 싶게 노란색> = 0.9)

지금까지, 나는 (항상 같은 열 아니기 때문에, 나는 그것을 검색 할) 열을 발견했다. 나는 셀의 값에 액세스 할 후, 나는 내가 칼럼을 통해 반복, 유형 missmatch 오류
Sub test() 
Dim x As Range 
    Cells.Find(What:="Percentage", After:=ActiveCell, LookIn:=xlFormulas _ 
     , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False).Activate 

    For Each x In ActiveCell.EntireColumn 
     If x.Value > 1 Then 
      x.Interior.ColorIndex = 10 
     End If 
    Next x 
End Sub 

당신이 볼 수 있듯이 (13)

를 얻을. 이미 잘못된 것인가?

는 내가 제대로 내 문제를 설명하고, 전체 열입니다 도움이

+1

, 조건부 서식 만 사용할 수 있습니다. 자세한 내용은 [여기] (https://support.office.com/en-gb/article/Use-a-formula-to-apply-conditional-formatting-fed60dfa-1d3f-4e13-9ecb-f1951ff89d7f)를 참조하십시오. – Jordan

답변

0

불행하게도, ActiveCell.EntireColumn 통해 반복하는 각각의 셀을 반환하지 않는, 그냥 반환 한 Range에 대한 기대 할 수 있기를 바랍니다. 대신 인덱스를 반복하십시오 :

Sub test() 
    Dim columnNumber As Long 
    columnNumber = Cells.Find(What:="Percentage", After:=ActiveCell, LookIn:=xlFormulas _ 
     , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False).Column 
    Dim i As Long 
    For i = 1 To ActiveSheet.UsedRange.Rows.Count 
     If Cells(i, columnNumber).Value > 1 Then 
      Cells(i, columnNumber).Interior.ColorIndex = 10 
     End If 
    Next i 
End Sub 
0

당신이해야 루프를 : 도베에게 아주 좋은 생각을하지 않는 것 저점 전체 열을 반복 한편
ActiveCell.EntireColumn.Cells
, 요르단 언급 한 바와 같이 조건부 서식을 시도해야한다, 또는 테이블에서 사용하는 범위를 검색하십시오.

+0

isn 코멘트로 더 적합합니까? 또한, EntireColumn을 통해 루핑하는 것은 거의 좋은 생각이 아닙니다. 전체 열에 실제로 데이터가있는 경우를 제외하고는 절대로 좋은 아이디어라고 말할 수 없습니다. –

0

답장을 보내 주셔서 감사합니다. 조건부 포맷으로 작업하려고했지만 월간 칼럼의 위치가 매월 바뀌기 때문에 가능합니까?

@bobajob 내가 코드를 실행하려고하지만, 내가 typemissmatch을 가지고 여기에 (13) 오류 : 나는이에 대한 VBA를 사용할 필요가 있다고 생각하지 않습니다

If Cells(i, columnNumber).Value > 1 Then

관련 문제