精华内容
下载资源
问答
  • VB中动态数组的使用事项

    千次阅读 2019-02-27 16:05:14
    1.动态数组的使用时,先在窗体层、标准模块或过程中声明一个没有下标的数组(括号不能省略),不指定维数。 2.在过程中用ReDim语句定义带下标的数组,给出数组的维数。注意:用ReDim定义的数组,只能改变数组元素的...

    1.动态数组的使用时,先在窗体层、标准模块或过程中声明一个没有下标的数组(括号不能省略),不指定维数。
    2.在过程中用ReDim语句定义带下标的数组,给出数组的维数。注意:用ReDim定义的数组,只能改变数组元素的个数,不能改变数组的维数和数据类型。

    以下举例几个错误类型:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 声明固定大小的数组有三种方法声明固定大小的数组,用哪一种方法取决于数组应有有效范围:建立公用数组,在模块的声明段用 Public 语句声明数组。建立模块级数组,在模块的声明段用 Private 语句声明数组。建立...

    声明固定大小的数组

    有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围:

    建立公用数组,在模块的声明段用   Public   语句声明数组。

    建立模块级数组,在模块的声明段用   Private   语句声明数组。

    建立局部数组,在过程中用   Private   语句声明数组。

    设定上下界

    声明数组时,在数组名之后跟一个用括号括起来的上界。上界不得超过   Long   数据类型的范围(-2,147,483,648   到   2,147,483,647)。例如,下列数组声明可出现在模块的声明段:

    Dim   Counters   (14)   As   Integer                   '15   个元素。

    Dim   Sums   (20)   As   Double                         '21   个元素。

    为建立公用数组,直接用   Public   取代   Dim。

    Public   Counters   (14)   As   Integer

    Public   Sums   (20)   As   Double

    在过程之中同样的声明使用   Dim:

    Dim   Counters   (14)   As   Integer

    Dim   Sums   (20)   As   Double

    第一个声明建立了一个有   15   个元素的数组,其索引号从   0   到   14   。第二个声明建立了一个有   21   个元素的数组,其索引号从   0   到   20   。缺省的下界为   0。

    为了规定下界,用关键字   To   显式提供下界(为   Long   数据类型):

    Dim   Counters   (1   To   15)   As   Integer

    Dim   Sums   (100   To   120)   As   String

    在前述声明中,Counters   的索引值范围从   1   到   15,而   Sums   的索引值范围从   100   到   200。

    包含其它数组的数组

    有可能建立   Variant   数据类型数组,并与不同数据类型的数组共居一处。以下代码建立两个数组,一个包含整数,而另一个包含   字符串。然后声明第三个   Variant   数组,并将整数和字符串数组放置其中:

    Private   Sub   Command1_Click   ()

    Dim   intX   As   Integer       '声明计数器变量。

    '声明并放置整数数组。

    Dim   countersA   (5)   As   Integer

    For   intX   =   0   To   4

    countersA   (intX)   =   5

    Next   intX

    '声明并放置字符串数组。

    Dim   countersB   (5)   As   String

    For   intX   =   0   To   4

    countersB   (intX)   =   "hello"

    Next   intX

    Dim   arrX   (2)   As   Variant                   '声明拥有两个成员的新数组。

    arrX   (1)   =   countersA   ()             '将其它数组移居到数组。

    arrX   (2)   =   countersB   ()

    MsgBox   arrX   (1)   (2)                   '显示每一个数组的成员。

    MsgBox   arrX   (2)   (3)

    End   Sub

    多维数组

    有时需要追踪记录数组中的相关信息。例如,为了追踪记录计算机屏幕上的每一个像素,需要引用它的   X、Y   坐标。这时应该用多维数组存储值。

    可用   Visual   Basic   声明多维数组。例如,下面的语句声明了一个过程内的   10   ×   10   的二维数组。

    Static   MatrixA   (9,   9)   As   Double

    可用显式下界来声明两个维数或两个维数中的任何一个:

    Static   MatrixA   (1   To   10,   1   To   10)   As   Double

    可以将所有这些推广到二维以上的数组。例如:

    Dim   MultiD   (3,   1   To   10,   1   To   15)

    这个声明建立了三维数组,大小为   4   ×   10   ×   15。元素总数为三个维数的乘积,为   600。

    注意   在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。使用   Variant   数组时更要格外小心,因为他们需要更大的存储空间。

    用循环操作数组

    可以用   For   循环嵌套有效的处理多维数组。例如,在   MatrixA   中基于每个元素在数组中的位置为其赋值:

    Dim   I   As   Integer,   J   As   Integer

    Static   MatrixA(1   To   10,   1   To   10)   As   Double

    For   I   =   1   To   10

    For   J   =   1   To   10

    MatrixA   (I,   J)   =   I   *   10   +   J

    Next   J

    Next   I

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

    (如果希望数组为公用数组,则)用   Public   语句声明数组,或者,(如果希望数组为模块级,则)在模块级用   Dim

    语句声明数组,或者(如果希望数组为局部数组,则)在过程中用   Static   或   Dim

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

    Dim   DynArray   ()

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

    ReDim   DynArray   (X   +   1)

    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   Matrix1   (X,   Y)

    注意   您可以将字符串赋值给大小可变的字节数组。一个字节数组也可以被赋值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在   Unicode   平台上的字节数是它在非   Unicode   平台上的两倍。

    保留动态数组的内容

    每次执行   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)

    '

    展开全文
  • 建立公用数组,在模块的声明段用 Public 语句声明数组。 建立模块级数组,在模块的声明段用 Private 语句声明数组。 建立局部数组,在过程中用 Private 语句声明数组。 设定上下界 ...

    声明固定大小的数组  
      有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围:    

      建立公用数组,在模块的声明段用   Public   语句声明数组。  
      建立模块级数组,在模块的声明段用   Private   语句声明数组。  
      建立局部数组,在过程中用   Private   语句声明数组。    
      设定上下界  
      声明数组时,在数组名之后跟一个用括号括起来的上界。上界不得超过   Long   数据类型的范围(-2,147,483,648   到   2,147,483,647)。例如,下列数组声明可出现在模块的声明段:  
       
      Dim   Counters   (14)   As   Integer                   '15   个元素。  
      Dim   Sums   (20)   As   Double                         '21   个元素。  
       
      为建立公用数组,直接用   Public   取代   Dim。  
       
      Public   Counters   (14)   As   Integer  
      Public   Sums   (20)   As   Double  
       
      在过程之中同样的声明使用   Dim:  
       
      Dim   Counters   (14)   As   Integer  
      Dim   Sums   (20)   As   Double  
       
      第一个声明建立了一个有   15   个元素的数组,其索引号从   0   到   14   。第二个声明建立了一个有   21   个元素的数组,其索引号从   0   到   20   。缺省的下界为   0。  
       
      为了规定下界,用关键字   To   显式提供下界(为   Long   数据类型):  
       
      Dim   Counters   (1   To   15)   As   Integer  
      Dim   Sums   (100   To   120)   As   String  
       
      在前述声明中,Counters   的索引值范围从   1   到   15,而   Sums   的索引值范围从   100   到   200。  
       
      包含其它数组的数组  
      有可能建立   Variant   数据类型数组,并与不同数据类型的数组共居一处。以下代码建立两个数组,一个包含整数,而另一个包含   字符串。然后声明第三个   Variant   数组,并将整数和字符串数组放置其中:  
       
      Private   Sub   Command1_Click   ()  
            Dim   intX   As   Integer       '声明计数器变量。  
            '声明并放置整数数组。  
            Dim   countersA   (5)   As   Integer  
                  For   intX   =   0   To   4  
                        countersA   (intX)   =   5  
                  Next   intX  
            '声明并放置字符串数组。  
                  Dim   countersB   (5)   As   String  
                        For   intX   =   0   To   4  
                              countersB   (intX)   =   "hello"  
                        Next   intX  
            Dim   arrX   (2)   As   Variant                   '声明拥有两个成员的新数组。  
                  arrX   (1)   =   countersA   ()             '将其它数组移居到数组。  
                  arrX   (2)   =   countersB   ()  
                  MsgBox   arrX   (1)   (2)                   '显示每一个数组的成员。  
                  MsgBox   arrX   (2)   (3)  
      End   Sub

     
      多维数组  
      有时需要追踪记录数组中的相关信息。例如,为了追踪记录计算机屏幕上的每一个像素,需要引用它的   X、Y   坐标。这时应该用多维数组存储值。  
       
      可用   Visual   Basic   声明多维数组。例如,下面的语句声明了一个过程内的   10   ×   10   的二维数组。  
       
      Static   MatrixA   (9,   9)   As   Double  
       
      可用显式下界来声明两个维数或两个维数中的任何一个:  
       
      Static   MatrixA   (1   To   10,   1   To   10)   As   Double  
       
      可以将所有这些推广到二维以上的数组。例如:  
       
      Dim   MultiD   (3,   1   To   10,   1   To   15)  
       
      这个声明建立了三维数组,大小为   4   ×   10   ×   15。元素总数为三个维数的乘积,为   600。  
       
      注意   在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。使用   Variant   数组时更要格外小心,因为他们需要更大的存储空间。    
      用循环操作数组  
      可以用   For   循环嵌套有效的处理多维数组。例如,在   MatrixA   中基于每个元素在数组中的位置为其赋值:  
       
      Dim   I   As   Integer,   J   As   Integer  
      Static   MatrixA(1   To   10,   1   To   10)   As   Double  
      For   I   =   1   To   10  
            For   J   =   1   To   10  
                  MatrixA   (I,   J)   =   I   *   10   +   J  
            Next   J  
      Next   I  
       
       
      要创建动态数组,请按照以下步骤执行:    
       
      (如果希望数组为公用数组,则)用   Public   语句声明数组,或者,(如果希望数组为模块级,则)在模块级用   Dim   语句声明数组,或者(如果希望数组为局部数组,则)在过程中用   Static   或   Dim   语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。    
      Dim   DynArray   ()  
       
      用   ReDim   语句分配实际的元素个数。    
      ReDim   DynArray   (X   +   1)  
       
      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   Matrix1   (X,   Y)  
       
      注意   您可以将字符串赋值给大小可变的字节数组。一个字节数组也可以被赋值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在   Unicode   平台上的字节数是它在非   Unicode   平台上的两倍。  
       
      保留动态数组的内容  
      每次执行   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)  
        '

    转载于:https://www.cnblogs.com/dongzhiquan/archive/2009/09/23/1994731.html

    展开全文
  • VB中preserve用法

    2016-04-14 14:56:00
    ReDim 语句用来定义或重定义原来已经用带空圆括号(没有维数下标)的 Private、Public 或 Dim 语句声明过的动态数组的大小。可以使用 ReDim 语句反复地改变数组的元素以及维数的数目,但是不能在将一个数组定义为...

    注:本文转载自:http://zhidao.baidu.com/question/161401549.html

    ReDim 语句用来定义或重定义原来已经用带空圆括号(没有维数下标)的 Private、Public 或 Dim 语句声明过的动态数组的大小。
    可以使用 ReDim 语句反复地改变数组的元素以及维数的数目,但是不能在将一个数组定义为某种数据类型之后,再使用 ReDim 将该数组改为其它数据类型,除非是 Variant 所包含的数组。如果该数组确实是包含在某个 Variant 中,且没有使用 Preserve 关键字,则可以使用 As type 子句来改变其元素的类型,但在使用了此关键字的情况下,是不允许改变任何数据类型的。
    如果使用了 Preserve 关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目。例如,如果数组就是一维的,则可以重定义该维的大小,因为它是最末维,也是仅有的一维。不过,如果数组是二维或更多维时,则只有改变其最末维才能同时仍保留数组中的内容。下面的示例介绍了如何在为已有的动态数组增加其最末维大小的同时而不清除其中所含的任何数据。
    ReDim X(10, 10, 10) . . . ReDim Preserve X(10, 10, 15)
    同样地,在使用 Preserve 时,只能通过改变上界来改变数组的大小;改变下界则会导致错误。
    如果将数组改小,则被删除的元素中的数据就会丢失。如果按地址将数组传递给某个过程,那么不要在该过程内重定义该数组的各维的大小。
    在初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串 (""),而定长的字符串则用 0 填充。Variant 变量被初始化为 Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。在使用引用对象的变量之前,必须使用 Set 语句将一个已有的对象赋给该变量。在被赋值之前,所声明的对象变量有一个特定值 Nothing,这个值表示该变量没有指向任何对象的实例。
    小心 如果 ReDim 语句所使用的变量在模块级别或过程级别不存在,则该语句就相当于一个声明语句。如果此后在一个更广的范围内又创建了同名的变量,即使使用了 Option Explicit,ReDim 也将使用后声明的这个变量,且不会导致编译错误。为了避免这种冲突,就不应把 ReDim 作为声明语句使用,而只应作为重定义数组大小的语句。
    注意 要改变 Variant 所包含的数组的大小,必须在试图改变其数组大小之前显式声明该 Variant 变量。
    保留动态数组的内容 每次执行 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)

    转载于:https://www.cnblogs.com/gyc19920704/p/5391123.html

    展开全文
  • vb Script参考文档

    2009-07-28 22:13:02
    ReDim 语句 声明动态数组变量,并分配或重新分配过程级存储空间。 RegExp 对象 提供简单正则表达式支持。 Rem 语句 包含程序中的注释。 Replace 函数 返回一个字符串,其中某个指定子串被另一个子串替换,...
  • 8、静态数组与动态数组的区别是什么?在声明静态数组、重定义动态数组时的下标都可以用变量来表示吗? 9、函数过程和子过程的区别是什么? 10、子过程调用有哪两种形式? 11、什么是形参?什么是实参?什么是值引用...
  • 实例072 利用指针实现数组的插入 实例073 利用指针实现数组的拆分 实例074 利用指针过滤数组重复数据 实例075 使用Split函数分隔明日公司网址 第4章 程序常用算法 4.1 计算类算法 实例076 最大公约数和最小公...
  • Excel_VBA教程

    2014-09-22 11:36:34
    7.静态和动态数组 137 8.数组函数 139 9.ARRAY函数 139 10.ISARRAY函数 140 11.ERASE函数 140 12.LBOUND函数和UBOUND函数 141 13.数组中的错误 141 14.数组作为参数 143 15.接下来… 143 第八章 利用VBA操纵文件和...
  • ASP.NET精品课程+源代码

    千次下载 热门讨论 2009-01-05 20:15:51
    ASP.NET是Microsoft可用于创建和运行动态的交互式 Web 服务器应用程序。使用可合并 HTML 页、脚本命令以及 COM 组件,可以创建交互式 Web 页和功能强大 Web 应用程序。应用ASP.NET知识可以方便、快捷建设网站...
  • 目 录 第1 章 VB 2 0 0 8核心元素.......................... 1 ... 2 在ASP.NET中声明 全局文化.................................... 188 5 . 3 在ASP.NET中使用 文化设S .........................
  • 声明方法存在而不去实现它类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为类,并为该类声明方法,但不能在该类实现该类情况。不能创建abstract 类实例。然而可以创建一个变量,其...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    18.2 在 C #代码调用 C++和 VB 编写组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • Java开发技术大全(500个源代码).

    热门讨论 2012-12-02 19:55:48
    getMaxElem.java 获取数组中的最大元素 incCapicity.java 演示StingBuffer容量增长 SortDemo.java 排序示例 travelTwoDime.java 遍历二维数组 traversing.java 遍历一维数组 useStrBuf.java 使用...
  • C#微软培训资料

    2014-01-22 14:10:17
    18.2 在 C #代码调用 C++和 VB 编写组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • 9.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net体系结构 392 10.2 ado.net基本功能 393 10.2.1 ado.net常见任务 393 10.2.2 ado.net基本名称空间和类 398 ...
  • 9.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net体系结构 392 10.2 ado.net基本功能 393 10.2.1 ado.net常见任务 393 10.2.2 ado.net基本名称空间和类...
  •  静态编译后易语言EXE/DLL之间不能再共享譬如窗口、窗口组件等类似资源,对于已经静态连接到一个EXE/DLL中的支持库,该支持库中的数据或资源将不能再被其它EXE/DLL所使用同名支持库访问。这是因为代码被分别...
  • 2.4.2 api的声明50 2.4.3 api应用实例51 2.5 本章 小结52 第2篇 数据库应用开发实例 第3章 家庭理财系统54 3.1 实例功能说明54 3.2 系统设计方案55 3.2.1 模块设计及开发环境55 3.2.2 系统结构图55 3.2.3 数据库...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    1.2EXCEL环境基于应用程序自动化优点................................................................................1 1.3录制简单宏....................................................................

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

vb中声明动态数组的语句