ReDim Preserve 的用途

如题所述

ReDim Preserve的作用是重新分配数组空间 默认情况下重新分配空间后数组内容都会清空,加上preserve后可以保留原来的数据在进行分配空间。      

redim  preserve arr(1 to k)  重新定义数组的大小,又可以保留数组内现有的值。

注意:redim  preserve 只能对数组的最后一维进行扩充,千万不要这样 redim preserve arr(1 to k,1 to 2),应该这样:redim preserve arr(1 to 2,1 to K)。

扩展资料:

ReDim语句的使用:

每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。

Visual Basi 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对 Numeric 数组)、置为 零长度字符串(对 String 数组)或者置为 Nothing(对于对象的数组)。

在为新数据准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 Preserve 关键字的 ReDim 语句就可做到这点。

例如,使用 UBound 函数引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失:

ReDim Preserve DynArray (UBound (DynArray) + 1)

参考资料来源:

百度百科-REDIM

百度百科-动态数组



温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-07-01

ReDim Preserve的作用是重新分配数组空间。默认情况下重新分配空间后数组内容都会清空,加上preserve后可以保留原来的数据再进行分配空间。redim  preserve arr(1 to k)  重新定义数组的大小,又可以保留数组内现有的值。

注意:redim  preserve 只能对数组的最后一维进行扩充,千万不要这样 redim preserve arr(1 to k,1 to 2),应该这样:redim preserve arr(1 to 2,1 to K)。

ReDim语句只能出现在过程中。与 Dim 语句、Static 语句不同,ReDim 语句是一个可执行语句,由于这一语句,应用程序在运行时执行一个操作。

ReDim 语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个 ReDim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。

ReDim DynArray (4 to 12)

例如,用第一次声明在模块级所建立的动态数组Matrix1:

Dim Matrix1 () As Integer

然后,在过程中给数组分配空间:

Sub CalcValuesNow ()

ReDim Matrix1 (19, 29)

End Sub

这里的 ReDim 语句给 Matrix 分配一个 20 × 30 的整数矩阵(元素总大小为 600)。

扩展资料:

每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。Visual Basi 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对 Numeric 数组)、置为 零长度字符串(对 String 数组)或者置为 Nothing(对于对象的数组)。

在为新数据准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 Preserve 关键字的 ReDim 语句就可做到这点。例如,使用 UBound 函数引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失:

ReDim Preserve DynArray (UBound (DynArray) + 1)

在用 Preserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程:

ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1)

而不可这样编程:

ReDim Preserve Matrix (UBound (Matrix, 1) + 1, 10)

参考资料来源:百度百科-REDIM

参考资料来源:百度百科-动态数组

本回答被网友采纳
第2个回答  推荐于2017-10-06
ReDim是重新定义数组的大小
加上Preserve使数组中已赋值的那些数据不被清空
例如
dim A(3)
A(0)=A(1)=A(2)=A(3)=1
Redim Preserve A(4) '数组变大了,之前赋值的数据不变
A(4)=2 ‘赋值给A(4)
for i = 0 to 4
print A(i)
next本回答被网友采纳
第3个回答  2012-08-08
redim是重新分配数组空间 默认情况下重新分配空间后数组内容都会清空,加上preserve后可以保留原来的数据在进行分配空间
相似回答