2009-11-23 142 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