在vb模块中怎么定义动态数组?

rt
就是在模块中定义一个函数,而函数的返回值是动态数组··
一楼的不行的,我的那个函数有自变量的,比如说
public function sort(n as integer) as integer 把这个sort定义成动态数组

我改成这样的,是定义成数组了。可是该怎么赋值的,比方说:
public function sort(n as integer) as integer()
dim i as integer
for i = 1 to n
sort(i)=i
next i
End Function
然后我在主窗体中随便写了

Private Sub Command1_Click()
Dim i As Integer
sort (5)
For i = 1 To 5
Print sort(i)
Next
End Sub
显示说类型不匹配,小弟不懂。该怎么赋值的···

1、声明数组的语句:

Dim types(  )  As integer 

2、然后使用ReDim语句来配置数组大小。

ReDim Types(X+1)  

3、假设想改变数组大小又不想丢失原来的数据,仅仅要在ReDim语句中包括Preservekeyword就能够,典型语句为:

ReDa_m PresetVe Types(10,23) 

对于多维数组,在使用Preservekeyword时,仅仅能改动最后一维的大小。假设改变其它维,那么将出现执行错误。假设不清楚某维的当前大小,能够使用GetI~ength函数来获取。

扩展资料:

数组的使用:

用For Each来循环遍历一个数组。比如:

Dim x As Integer    

F0r Each x In arrayl    

Console.WriteLine(x)    

Next 

在使用数组时还要注意,不仅声明语法有变化,并且在执行时处理方式也有了非常大的变化。VB.NET在堆栈中给数组分配地址空间,当向一个方法传递数组类型的参数时,使用的是引用传递而不是值传递。以下是互相传递数组引用的三个方法:

Dim arrayl(3,3)AS Integer      

Dim array2 As Integer(,)      

Redim array2(3,3)      

Dim array3 As Integer(,)={{2,4},{12,29}}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-23

在vb模块中定义动态数组有以下三种方式:

1、用 Public 语句声明数组;

2、在模块级用 Dim 语句声明数组;

3、在过程中用 Static 或 Dim 语句声明数组。

给数组附以一个空维数表,这样就将数组声明为动态数组。 

Dim DynArray ()

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

Dim Matrix1 () As Integer

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

Sub CalcValuesNow ()

ReDim Matrix1 (19, 29)

End Sub

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

扩展资料

有时希望改变数组大小又不丢失数组中的数据。使用具有 Preserve 关键字的 ReDim 语句就可做到。例如,使用 UBound 函数引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失:

ReDim Preserve DynArray (UBound (DynArray) + 1)

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

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

本回答被网友采纳
第2个回答  推荐于2017-09-14

VB6.0可在任何模块声明一个动态数组。

动态数组,数组到底应该有多大才合适,有时可能不得而知。所以希望能够在运行时具有改变数组大小的能力。

动态数组就可以在任何时候改变大小。在 Visual Basic
中,动态数组最灵活、最方便,有助于有效管理内存。例如,可短时间使用一个大数组,然后,在不使用这个数组时,将内存空间释放给系统。

创建动态数组,请按照以下步骤执行:

1.(如果希望数组为公用数组,则)用 Public 语句声明数组,或者,(如果希望数组为模块级,则)在模块级用 Dim
语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 Static 或 Dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。

Dim DynArray ()

2.用 ReDim 语句分配实际的元素个数。

ReDim DynArray (X + 1)

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

ReDim DynArray (4 to 12)

保留动态数组的内容:

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

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

ReDim Preserve DynArray (UBound (DynArray) + 1)

第3个回答  2015-06-03
  在VB中定义动态数组通常分两步首先在窗体层或标准模块中用DimPrivate或Public声明一个没有下标的数组(括号不能省略)然后在过程中用ReDim语句定义带下标的数组ReDim语句的作用是重新指出数组的大小它是在程序执行到ReDim语句时才分配存储空间
格式ReDim(数组名)(下标)[As(类型)]

ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .
功能改变动态数组的大小和存储空间
  说明:

  (1)下标可以是常量也可以是具有确定值的变量

  (2)语句中各参量的含义与用Dim定义数组的语句相同

  (3)ReDim语句只能用于动态数组它可以改变每一维的大小但不能改变维数

  (4)当程序编译时ReDim语句中的所有数组均被说明为动态数组在程序运行中当执行到ReDim语句时就把新的上下界重新分配给数组数组元素的值将被初始化所有的数值元素的值被置为字符串元素被置为空字符串

  (5)ReDim语句可以同Dim语句一样定义数组在同一程序中ReDim语句还可以多次使用在用ReDim语句重新定义数组之前可以使用Erase语句将原来的数组删除
第4个回答  2010-02-27
如果自定义函数没有参数,那么可以用下列方法实现你的目的:
Public Function sort() As Variant '一定要把返回值类型设为Variant
Dim x(2) As Integer
x(0) = 1
x(1) = 2
x(2) = 3
sort = x
End Function

调用方法举例:
MsgBox sort(1)

如果是带参数的则不行
相似回答