2014-07-24 2 views
1

나는 vba 멍청한 놈이다. 그래서 나에게 쉽게 가야한다. 나는 녹색으로 일치하면 배열을 반복하고 범위 배경색을 대체하려고한다.Object required .Interior.Color

그러나 내 코드에서 개체 오류가 발생했습니다.이 문제가 발생하는 이유는 무엇인지 알아 내려고했기 때문에 interior.color를 사용할 때 개체 참조가 있어야하지만 사용하지는 않았 음을 알고 있습니다. set loop_target = loop_over.interior.color 정확히 이거? 나는 단순히

Sub change_color() 

Dim loop_over As Variant 
Dim loop_target As Range 
Dim i As Long 
Dim j As Long 
Dim color_range As Long 

loop_over = Range("B4:L22") 

For i = 1 To UBound(loop_over, 1) 
    For j = 1 To UBound(loop_over, 2) 
     Set loop_target = loop_over.Interior.Color 
' If statement here -> If interior.color = green Then 
' new interior.color = red or something 


    Next j 
Next i 

End Sub 
+0

(loop_target)를 사용할 수 있습니다 감사합니다 ... 잘못 무슨 일이 일어나고 있는지 이해가 안 돼요 색상 (loop_over.interior.color <-이 잘못된 사용법입니다). 특정 색상으로 loop_target 범위를 설정하려고합니까? – Alex

+0

나중에 다른 변수에서했던 것처럼'loop_over = ... '앞에'Set'을 써야합니다. 개체에는 Set 구문이 필요합니다. 또한 범위에 색상을 지정하는 이유를 잘 모릅니다. –

+0

loop_over에서 세트를 설정하기 시작했지만 루프 시작 부분에 유형 불일치가 발생합니다 (i = 1).이 경우 루프를 어떻게 실행합니까? 내가 왜 루프에 loop_target을 사용했기 때문에 색상에 세트를 넣었습니까? – uncool

답변

0
Sub change_color() 

Dim c as Range, rng As Range, clr as long 

Set rng = ActiveSheet.Range("B4:L22") 

    For i = 1 To rng.Rows.Count 
     For j = 1 To rng.Columns.Count 
      clr = rng.Cells(i,j).Interior.Color 
      If clr = vbGreen Then 
       rng.Cells(i,j).Interior.Color = vbRed 
      End If 
     Next j 
    Next i 

End Sub 
+0

고맙습니다. 나는이 코드를 더 깊이 연구 할 것이다. 배열에 넣으면 실행 시간이 빨라지지 않습니까? 범위만으로 rng를 사용 했으므로 rng가 배열이 아닙니다. 배열 인 경우 범위 영역을 통해서만 루프 할 수 있다고 생각했습니다. – uncool

+0

* 범위 *에서 * 값 *에 액세스하려는 경우 범위가 큰 경우 값을 배열에로드하고 해당 배열을 반복하면 확실히 이동하는 방법입니다. 여기에서는 채우기 색을 검사 할 수 있어야하므로 값에만 관심이 없으므로 Range 자체에서 직접 작업해야합니다. –

+0

대단히 감사드립니다! – uncool

0

당신은 당신의 범위에 For Each Cell를 사용하여 간단하게하고 당신은 범위를 설정하는 Cell.Interior.Color

Sub change_color()  
Set MyRng = Range("B4:L22") 
    For Each Cell In MyRng.Cells 
    Debug.Print Cell.Interior.Color & "-" & Cell.Value 
    If (Cell.Interior.Color = 456752) Then Cell.Interior.Color = 1234567 
    Next Cell 

End Sub 
+0

감사합니다. 그것은 빠른 방법이었다. – uncool

관련 문제