2014-01-08 2 views
1

Excel VBA는 주어진 집합에 속한 인덱스 값에 대한 루핑을 허용합니까?집합에 속한 값을 가진 Excel VBA 루프

예를 들어

, 우리는 내가 같은

Sub testloop() 

    Dim IndexArray(3) As Variant 

    For k = 1 To 3 

     IndexArray(k) = Int((10000000 - 39000 + 1) * Rnd + 39000) 

    Next k 


    For j = 1 To UBound(IndexArray) 
     Range("A" & j).Select 
     With Selection.Interior 

      .Color = IndexArray(j) 

     End With 
    Next j 

End Sub 

그래서이 기반 세포에서 A1, A2 및 A3를 색상을내는 달성하기 위해 배열을 사용하고 지금

Sub testloop() 
    k = 1  

    For j in {30042, 2300023, 1003044} 

     Range("A" & k).Select 
     With Selection.Interior 

      .Color = j 

     End With 
    k = k + 1 
    Next j 

End Sub 

처럼 뭔가를 할 수있다 집합 IndexArray에 저장된 임의의 정수 값에 대해 배열에 저장하는 것이 아니라 인덱스 값 집합으로 루프하는 더 좋은 방법이 있습니까? Simoco의 솔루션에 따라

편집

, 나는이 한 :

Sub testloop() 

    Dim IndexArray(2) As Variant 

    For k = 0 To 2 

     IndexArray(k) = Int((10000000 - 39000 + 1) * Rnd + 39000) 

    Next k 

    kk = 70 

    For j = 0 To UBound(IndexArray) 

     Range("A" & kk).Select 
     With Selection.Interior 

       .Color = IndexArray(j) 

     End With 
     kk = kk + 1 
    Next j 


    For Each j In IndexArray 

      Range("A" & kk).Select 
      With Selection.Interior 

       .Color = j 

      End With 
      kk = kk + 1 
     Next j 

End Sub 

을하고 그것을 완벽하게 작동합니다!

enter image description here

답변

2

이 같은 것을 사용할 수 있습니다

Sub testloop() 
    k = 1 

    For Each j In Array(30042, 2300023, 1003044) 
     Range("A" & k).Select 
     With Selection.Interior 
     .Color = j 
     End With 
     k = k + 1 
    Next j 

End Sub 
+0

감사합니다! 제 편집문을 보시고 어쩌면 제가 왜 두 번째 루프에서 여분의 검은 색을 얻고 있는지 볼 수있게 도와 주시겠습니까? – Amatya

+1

실제로 배열에는 4 개의 요소가 있습니다. 'Dim IndexArray (3) As Variant'를 선언하면 0에서 3까지의 차원을 가진 배열을 얻게되고'IndexArray (0)'을 정의하지 않았으므로 기본적으로 0과 같습니다. –

+1

오, 고마워 ... 그래서 만약 내가 큰 배열 집합을 가지고 그들 모두를 나열하고 싶지 않았어 : IndexArray (....... 매우 긴 ...), 할 수 있습니다 : IndexArray 각 In j = 0을 제외하고? 오, 오케이 .. 0부터 2까지 내 색인을 정의하십시오. 알았어요. – Amatya