vb中Redim语句报错,解决即结贴

vb中Redim语句报错,在线等,解决即结贴!vb 中,为什么ReDim fzStatAnalys0(1 To i) As fzStatAnalys 没问题R

vb中Redim语句报错,在线等,解决即结贴!
vb 中,为什么 
ReDim fzStatAnalys0(1 To i) As fzStatAnalys 没问题

ReDim Preserve fzStatAnalys0(1 To i) As fzStatAnalys 就报错呢?

VB code
Public Type fzStatAnalys    sbh As String              sbxh As String             workType As Byte           Driver As Long             StarTime As Long           EndTime As Long           keepTime As Long          by As String           End Type


[解决办法]
先定义一个数组,再动态改
VB code
Dim i As IntegerDim fzStatAnalys0() As fzStatAnalysi = 2ReDim fzStatAnalys0(1 To i) As fzStatAnalysfzStatAnalys0(1).by = "1"i = 3ReDim Preserve fzStatAnalys0(1 To i) As fzStatAnalysDebug.Print fzStatAnalys0(1).by
[解决办法]
redim用来重新定义数组大小, 如果只要更改最后一个维度的大小时,并保留现有数组中的数据就用Preserve

但是redim不能改变数组的类型, 所以后面不要 as XXX


[解决办法]
Dim fzStatAnalys0() As fzStatAnalys

ReDim Preserve fzStatAnalys0(1 To i)