|
楼主 |
发表于 2009-10-11 14:03
|
显示全部楼层
回复 676楼 阿龙168 的帖子
1、可否解释一下中间为什么会有0,如何把0去掉达到1,3,5,7这种结果? ————————根据你的描述,你是把程序代码修改为:Sub ggsmart2()
Dim arr(1 To 100) As Integer
For i = 1 To 100 Step 2
arr(i) = i
Next
[a1].Resize(100, 1) = WorksheetFunction.Transpose(arr)
End Sub 你把步长改为2,这样,在执行循环时,循环变量i的值在循环一次时增加2,即分别为1,3,5,7.......99.这样。这样,for—next循环部分的语句实际上执行了以下操作:
arr(1) = 1
arr(3) = 3
arr(5) = 5
arr(7) = 7
.........
arr(99) = 99
这样,arr(2),arr(4),arr(6).......arr(100)实际上并没有赋值,没有赋值就默认为0。
所以[a1].Resize(100, 1) = WorksheetFunction.Transpose(arr)语句执行后,当然会有0存在。
至于怎样才能把0去掉?那给arr赋值的时候,索引号别用我们循环的循环变量i就可以了。另外,数组只需要50个元素即可,所以定义数组或把数组写入单元格时,不用再用100了。
2、 “j = 1 '数组1 to 50的索引号 j = j + 1 '索引号加1”这两行起什么作用?是不是所有二维以上的数组一定要有这种格式?————————还是看你的原种代码:
Sub ggsmart5()
Dim j As Integer
Dim arr(1 To 100) As Integer
j = 1
For i = 1 To 100 Step 2
arr(i) = i '奇数赋值
j = j + 1
Next
[F3].Resize(100, 1) = WorksheetFunction.Transpose(arr)
End Sub
首先纠正一下,你的这个程序生成的结果并不是一个二维数组。至于中间的变量j,应该是用来作数组arr的索引号的,用它的目的是为了避免你在上面问到的会出现0的情况。但是既然定义了变量j,为什么在数组arr(i)=i这一句不使用呢?还有一个问题,1至100的奇数只有50个,定义数组时,定义50个元素就可以了。所以,上面你的代码应该修改为:
- Sub ggsmart5()
- Dim j As Integer
- Dim arr(1 To 50) As Integer
- j = 1
- For i = 1 To 100 Step 2
- arr(j) = i '奇数赋值
- j = j + 1
- Next
- [F3].Resize(50, 1) = WorksheetFunction.Transpose(arr)
- End Sub
复制代码
[ 本帖最后由 ggsmart 于 2009-10-11 14:05 编辑 ] |
|