我是靠谱客的博主 还单身翅膀,最近开发中收集的这篇文章主要介绍vba 数组(动态数组),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       主要内容: 本文章主要介绍VBA中,数组的使用,特别介绍动态数组的使用,并有简单事例,帮助理解。
数组是我们经常用到的存储数据的一种媒介,他到底是什么呢?

一、定长数组

数组是具有相同数据类型并且共享一个名字的一组变量的集合。通俗的说,数组是变量
数组的声明

可以用Dim语句或者Public语句生命数组。

  如: Dim/Public 数组名 (a to b) as 数据类型

a 和b 是数组中元素的个数,数组元素素最小值为a,最大值为b,元素个数为(b-a+1),当然,你也可以直接输入个数,此时默认最小索引号为0。  

       如: 

Dim myarr(5) As Integer	

上面定义的只是一维数组,你还可以定义二维、三维、四维…….

如: 

Dim myarr(1 to 5,1 to 10) As Integer

这就是一个二维数组,元素个数为5*10=50个

在程序设计的过程中,定义数组的时候我们可能不能确定数组的元素个数,对数组进行声明后,可以在运行时用ReDim语句重新指定数组的大小。

当就涉及动态数组。

二、动态数组

        
1、动态数组的定义

  动态数组的定义,一开始不需要给数组标明上界和下界。直接定义即可,如下面的代码:

	Dim MyStr() As String

  这样,就定义了一个动态数组及其名称:MyStr(),现在,该数组的上界下界都是个未知数,也就是说,数组中到底有没有内容或到底有什么内容,是个未知数。

  因此,要使用动态数组,就必须对其定义好下界和上界。

2、给动态数组确定下界和上界

  给动态数组重新确定下界和上界,那么,分两种情况。

  ①保留原值

  采用此代码:ReDim Preserve MyStr(n) 'n为数组长度

  ②不保留原值

  采用此代码:ReDim MyStr(n) 'n为数组长度

  ③以上两种情况的实例

  下面我们看如上两种情况的小实例:

  比如:

 
Dim MyStr() As String
 
 ReDim MyStr(2)
  

MyStr(0)=”1”
 
 MyStr(1)=”2”

  现在,这个动态数组有两个值了,分别是0和1,现在,我们再重新确定该数组的长度。

  当然,重新确定自然又有两种情况了。

  A、保留原有数据

  ReDim Preserve MyStr(3) '原来长度是2,现在重新确定为3,并且,保留原有的数据。
  MyStr(2)=”3” '现在,该数组就有三个值了,分别是:

  MyStr(0)为1、MyStr(1)为2、MyStr(2)为3

  B、不保留原有数据

  如果我们使用如下代码

  ReDim MyStr(3)
  MyStr(2)=”3”

  现在,该数组的长度尽管为3,但是,里面却只有一个数据了,那就是,MyStr(2)的值是3,而MyStr(0)和MyStr(1)里面,什么都没有。

  关键字:Preserve的作用就的保留原有值,请根据需要加以取舍。

3、动态数组与EXCEL的结合使用实例

	Dim n As Integer
  	n = 0
 	Dim MyStr() As String
 	For i = 1 To Sheet1.UsedRange.Rows.Count
   
For j = 1 To Sheet1.UsedRange.Columns.Count
   
 n = n + 1
   
 ReDim Preserve MyStr(n) '给动态数组重定义一个实际的大小
   

MyStr(n - 1) = Sheet1.Cells(i, j).Value '存到动态数组里去
  
Next j
  	Next i
 	For Each MyArray In MyStr
   	
MsgBox "数组的值是" & MyArray
  	Next

  以上代码的功能是:将Sheet1中已经有数据的单元格区域,通过VBA代码循环找到每行每列对应的单元格的值,通过对话框显示出来。

  注意哦,数组的使用,其下界都是从0开始的。
4、计算数组长度

例子:  


Dim MyStr() As String
 

数组长度为: ubound(MyStr)-lbound(MyStr)(上下界相减) 
5、二维动态数组 

例子:
Dim ArrSameStr() As Long
ReDim Preserve ArrSameStr(1 To Str5, 1 To 4)
和一维数组一样,只是定义两个值 。

最后

以上就是还单身翅膀为你收集整理的vba 数组(动态数组)的全部内容,希望文章能够帮你解决vba 数组(动态数组)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部