Vba ReDim Preserve做什么?
我正在查看其他人的vba excel代码。他们在两个循环中都做了Vba ReDim Preserve做什么?,vba,excel,Vba,Excel,我正在查看其他人的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
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
Dim dataMatrix()作为字符串
工作表。项目(“ETS”)。选择
边修剪边执行(单元格(r,1))“”
调试。打印“行:”,修剪(单元格(r,1)),r
r=r+1
数据矩阵(1,i)=修剪(单元格(r,1))''文件名
数据矩阵(2,i)=修剪(单元格(r,2))''样本类型
数据矩阵(3,i)=修剪(单元格(r,3))''样本名称
数据矩阵(4,i)=“ETS”
数据矩阵(5,i)=微调(单元格(r,5))响应
数据矩阵(6,i)=微调(单元格(r,6))''ISTD响应
数据矩阵(7,i)=微调(单元格(r,10))''计算浓度
i=i+1
ReDim保留数据矩阵(7,i)
环
r=5
工作表。项目(“ETG”)。选择
边修剪边执行(单元格(r,1))“”
调试。打印“行:”,修剪(单元格(r,1)),r
r=r+1
数据矩阵(1,i)=修剪(单元格(r,1))''文件名
数据矩阵(2,i)=修剪(单元格(r,2))''样本类型
数据矩阵(3,i)=修剪(单元格(r,3))''样本名称
数据矩阵(4,i)=“ETG”
数据矩阵(5,i)=微调(单元格(r,5))响应
数据矩阵(6,i)=微调(单元格(r,6))''ISTD响应
数据矩阵(7,i)=微调(单元格(r,10))''计算浓度
i=i+1
ReDim保留数据矩阵(7,i)
环
Redim Preserve
允许您在保留数组内容的同时更改数组的维度
每个循环末尾的Redim Preserve
正在向数组中添加另一行
我认为第二个循环是附加到数组中的,因为
I
变量在循环之间没有更改。ReDim
在修改数组大小时保留数组中的数据。它也不应该覆盖数据,因为i
在循环的每次迭代中都会递增:第一个循环不会停止,直到它遇到一个空单元格,每次迭代将数组长度更改一次,因此当长度为8
时,它会将1
添加到i
中,新的长度变为9
。当第二次迭代发生时,它用索引9
将新元素写入数组的边界,再次修改其长度,使其变为1
元素,并进行迭代,直到遇到空行。此外,第二个循环似乎只是覆盖了第一个循环中的数据,对吗,第二个循环附加到数组,因为i
在循环之间没有重置。您的点是?几天前我得到了一张选票,引起了我的注意。我在两天前添加了这条评论,但我也在我的回答中回答了它。好吧,“答案”在过去两年一直在我的回答中。我这样做不是为了你的利益。我在这里,所以我更新了评论,以供将来可能看到它的人参考。我不知道你是在开玩笑还是在胡闹。如果你想搞笑的话,我很抱歉我不这么想。看起来第二个循环只是覆盖了第一个循环中的数据,对吗?第二个循环不会覆盖第一个循环中的数据,因为我在第一个循环后不会重置。第二个循环将内容附加到第一个循环中生成的数据矩阵中。