2009-11-23 145 views
0

在一塊VBA代碼我有以下幾點:循環代碼/跳過行

For i = 1 To 5 
    myArray(i) = i + 0 
Next i 
For i = 6 To 8 
    myArray(i) = i + 1 
Next i 
For i = 9 To 14 
    myArray(i) = i + 2 
Next i 

...等

必須有更好的方式來做到這一點,但我的生活我想不出一個。誰能幫忙?也許是使用Select..Case語法的東西?

編輯:這些實際上應該是公司中各個分部的區域。我'跳過'的線條會自動計算出所有區域的總數。

+0

嗯,有可能更優雅的方式,但「更好」將取決於你的目標是什麼。你能描述一下上下文以及你想完成什麼嗎? – anschauung 2009-11-23 16:08:30

回答

2

由於您跳過的行不統一,並且從它的聲音可能會改變您可能不希望在Select語句的多行中對其進行硬編碼。這可能是更容易記在一個Array

'Create an Array of Rows to Skip 
rowsToSkip = Array(6, 9) 

'Loop over all data 
For i = 1 To 14 
    skipcount = 0 

    'For each skip row we have passed add one to the skipcount 
    For Each rownum In rowsToSkip 
     If i >= rownum Then 
      skipcount = skipcount + 1 
     End If 
    Next rownum 

    myArray(i) = i + skipcount 
Next i 
+0

我非常喜歡這個。我之前的最佳嘗試是類似 SkipArray = Array(0,0,0,0,0,1,1,1,2,2,2,2,2,2 ...等等 謝謝! – 2009-11-23 16:44:10

0
For i = 1 to 14 
    select case i 
     case 1 to 5 
      myArray(i) = i + 0 
     case 6 to 8 
      myArray(i) = i + 1 
     case 9 to 14 
      myArray(i) = i + 2 
    end select 
Next i