l--*_*''' 18 excel vba excel-vba
我在看别人的vba excel代码.他们ReDim Preserve dataMatrix(7, i)在两个循环中都做了.这是做什么的?
此外,似乎第二个循环只是覆盖第一个循环中的数据,这是正确的吗?
Dim dataMatrix() As String
Worksheets.Item("ETS").Select
Do While Trim(Cells(r, 1)) <> ""
Debug.Print "The line: ", Trim(Cells(r, 1)), r
r = r + 1
dataMatrix(1, i) = Trim(Cells(r, 1)) ''file name
dataMatrix(2, i) = Trim(Cells(r, 2)) ''sample type
dataMatrix(3, i) = Trim(Cells(r, 3)) ''sample name
dataMatrix(4, i) = "ETS" ''
dataMatrix(5, i) = Trim(Cells(r, 5)) ''Response
dataMatrix(6, i) = Trim(Cells(r, 6)) ''ISTD Response
dataMatrix(7, i) = Trim(Cells(r, 10)) ''Calculated Conc
i = i + 1
ReDim Preserve dataMatrix(7, i)
Loop
r = 5
Worksheets.Item("ETG").Select
Do While Trim(Cells(r, 1)) <> ""
Debug.Print "The line: ", Trim(Cells(r, 1)), r
r = r + 1
dataMatrix(1, i) = Trim(Cells(r, 1)) ''file name
dataMatrix(2, i) = Trim(Cells(r, 2)) ''sample type
dataMatrix(3, i) = Trim(Cells(r, 3)) ''sample name
dataMatrix(4, i) = "ETG"
dataMatrix(5, i) = Trim(Cells(r, 5)) ''Response
dataMatrix(6, i) = Trim(Cells(r, 6)) ''ISTD Response
dataMatrix(7, i) = Trim(Cells(r, 10)) ''Calculated Conc
i = i + 1
ReDim Preserve dataMatrix(7, i)
Loop
Run Code Online (Sandbox Code Playgroud)
aph*_*ria 18
Redim Preserve 允许您在保留数组内容的同时更改数组的大小.
的Redim Preserve在每个循环结束时加入另一行到阵列.
我认为第二个循环附加到数组,因为i循环之间的变量没有改变.
Yas*_*aev 13
ReDim修改其大小时,在数组中保留数据.此外,它不应该覆盖数据i,因为循环的每次迭代都会增加:第一个循环不会停止,直到它遇到一个空单元格,每次迭代时将数组长度改为1,这样当长度8增加时,它会添加1到i和新的长度变成了9.当第二次迭代发生时,它将新元素写入带索引的数组边界,9再次修改其长度,使其变为1元素更长并迭代直到遇到空行.
| 归档时间: |
|
| 查看次数: |
91930 次 |
| 最近记录: |