2015-01-16 2 views
-1

vba를 처음 사용하고 C 열 ("진행 중"이라고 표시해야 함)의 값을 가져 와서 "중성"색으로 만드는 모듈을 만들려고합니다. E 열의 같은 행에있는 값이 0.5 (또는 50 %)보다 작 으면 어떤 행운도 없었습니다. 내가 가지고있는 행을 추적하기 위해 카운터 변수를 만들었습니다. 어떤 조언이 도움이 될 것입니다. 그리고 vba를 배우기위한 좋은 원천을 추천 해 주시면 감사하겠습니다.다른 열의 값을 기준으로 한 열의 색상 변경

If Range("C1") = "Status" Then 

    Range("C1").Select 

    Do Until ActiveCell.Value = "" 

     If ActiveCell.Offset(1, 0).Value = "In Progress" Then 
      If Range("E" & counter).Value < 0.5 Then 
       ActiveCell.Offset(1, 0).Style = "Neutral" 
      End If 
     End If 

     ActiveCell.Offset(1, 0).Select 

     Columns("C").ColumnWidth = 13 

     counter = counter + 1 

    Loop 

End If 

+0

이 질문은 [off topic] (http://stackoverflow.com/help/on-topic)로 폐쇄되어 "vba 학습의 좋은 근원"이라고 말하십시오. 코드에 문제가있는 경우 [mcve] (http://stackoverflow.com/help/mcve)에서 문제를 설명하십시오. 이것에 대한 VBA는 불필요한 것으로 보인다. – pnuts

+0

Excel에서 기본 제공 조건부 서식 기능을 사용해 보셨습니까? – guitarthrower

+0

응답 해 주셔서 감사합니다. 그것은 충분히 단순 해 보이지만, 이것은 각각 약 300 행을 갖는 여러 장의 시트를위한 것입니다. 따라서 모듈을 사용하면 지루한 작업을위한 시간을 줄일 수 있습니다. – Ken

답변

0

안된 최종 하위는 :

지금까지 내가 문제를 이해하고이 당신을 위해 적합으로
Dim c As Range, sht As WorkSheet 

Set sht = ActiveSheet 
If sht.Range("C1").Value = "Status" Then 

    Set c = sht.Range("C2") 

    Do Until Len(c.Value) = 0 

     If c.Value = "In Progress" Then 
      If c.EntireRow.Cells(1, "E").Value < 0.5 Then 
       c.Style = "Neutral" 
      Else 
       c.Style = "Normal" 
      End If 
     End If 

     Set c = c.Offset(1, 0) 
    Loop 

    sht.Columns("C").ColumnWidth = 13 

End If 
+0

예! 이 고침은 정말 고마워요. – Ken

0

, 당신이 이것을 시도 할 수 있습니다. 다음 코드는 전체 열 A에서 "진행 중"값을 검색하고이 값이 발견되어 C 열의 동일한 행 셀이 0.5보다 작은 경우 A 열의 셀 색을 "채우기 없음"으로 설정합니다 .

Sub searchValue() 
    Dim cell As Range 
    For Each cell In Worksheets(1).Columns(1).Cells 
     If cell = "In Progress" Then 
      If cell.Offset(0, 2) < 0.5 Then cell.Interior.ColorIndex = 0 
     End If 
    Next cell 
End Sub 
+0

입력 해 주셔서 감사합니다. 이것은 내 문제를 더 잘 이해하는 데 도움이되었습니다. – Ken

관련 문제