Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 71925|回复: 238

[VBA] VBA数组的一些概念

  [复制链接]
发表于 2008-6-30 02:31 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2012-7-5 22:46 编辑 <br /><br /><P>最近给VBA入门班上课,真是汗颜,发现一个常见的数组下标概念竟然模糊不清,之后请教了我家耗子,才算是搞清楚了,特别写出来,供大家参考,这仅仅是我自己理解的东西,如有不当,恳请跟贴指正。<BR><BR>以下附件为本文的Excel版本:</P>
<P>[hide]</P>
<P></P>
<P>[/hide ]<BR><BR><FONT color=#cc00ff size=4><STRONG>一,数组的下标</STRONG></FONT><BR>在VBA里,一个数组是有一定的大小和维数的,而用来标识数组的这些属性的数字,就叫数组的<FONT color=#ff0000><STRONG>下标</STRONG></FONT>,一般是用括号括起来,写在数组的右边<BR>数组的一般表示方法是:</P>
<P><FONT color=#0000ff>数组名称(下标1,下标2,下标3.....)<BR><BR></FONT><FONT color=#ff0000>在这里,每一个下标表示一个维度,用逗号分隔,下标个数代表数组维数<BR></FONT>VBA数组最多可以定义60个维度,即后面可以跟60个下标<BR><FONT color=#ff0000>注意:数组是没有“上标”这个概念的</FONT><BR><BR>每个下标,都有一定范围,来指示该维度的大小<BR>这个范围靠小的那边,称为这个下标的<FONT color=#ff0000><STRONG>下界</STRONG></FONT>(最小下标);靠大的那边,称为这个下标的<FONT color=#ff0000><STRONG>上界</STRONG></FONT>(最大下标)<BR><BR>下标的表示方式基本上有两种:<BR><BR><STRONG>1. 单个大于等于0的整数表示下标,这时</STRONG>&nbsp;<BR><BR>该维的下界(最小下标):默认为0;&nbsp;<BR>该维的上界(最大下标):这个整数;&nbsp;<BR>该维的元素的个数:(这个整数+1);&nbsp;<BR><BR>该数组元素的个数为:各维个数的乘积。&nbsp;<BR><BR><STRONG>arr(4)</STRONG>&nbsp;<BR>——表示这个数组只有一维,下标是4,下界是0,上界是4,数组的元素个数是5&nbsp;<BR><BR>&nbsp;运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在“视图”菜单中调出本地窗口)<BR>&nbsp;Ubound函数返回数组的上界<BR>&nbsp;Lbound函数返回数组的下界<BR><BR><FONT color=#0000ff>&nbsp;Sub aa()<BR>&nbsp;&nbsp;&nbsp;&nbsp; Dim arr(4)<BR>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox UBound(arr)<BR>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox LBound(arr)<BR>&nbsp;&nbsp;&nbsp;&nbsp; Stop<BR>&nbsp;End Sub<BR><BR></FONT><IMG border=0 alt="" src="http://www.excelpx.com/UploadFile/2008-6/20086302224298616.jpg">&nbsp;<BR><STRONG><BR>arr(1,2)&nbsp;<BR></STRONG>——表示这个数组有两维,第一维下标是1,下界是0,上界是1;第二维下标是2,下界是0,上界是2;该数组的元素个数是(1+1)×(2+1)=6&nbsp;<BR><BR>&nbsp;运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在“视图”菜单中调出本地窗口)<BR>&nbsp;Ubound函数返回数组的上界,后面的参数代表返回第几维<BR>&nbsp;Lbound函数返回数组的下界,后面的参数代表返回第几维<BR><BR>&nbsp;<FONT color=#0033ff>Sub bb()<BR>&nbsp;&nbsp;&nbsp;&nbsp; Dim arr(1, 2)<BR>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox UBound(arr) &amp; "," &amp; UBound(arr, 2)<BR>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox LBound(arr) &amp; "," &amp; LBound(arr, 2)<BR>&nbsp;&nbsp;&nbsp;&nbsp; Stop<BR>&nbsp;End Sub<BR><BR></FONT><STRONG><IMG border=0 alt="" src="http://www.excelpx.com/UploadFile/2008-6/2008630224313524.jpg"><BR><BR>arr(1,0,2)&nbsp;<BR></STRONG>——表示该数组有三维,第一维下标是1,下界是0,上界是1;第二维下标是0,下界是0,上界是0;第三维下标是2,下界是0,上界是2;该数组的元素个数是(1+1)×(0+1)×(2+1)=6&nbsp;<BR><BR>&nbsp;运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在“视图”菜单中调出本地窗口)<BR>&nbsp;Ubound函数返回数组的上界,后面的参数代表返回第几维<BR>&nbsp;Lbound函数返回数组的下界,后面的参数代表返回第几维<BR><BR>&nbsp;<FONT color=#0000ff>Sub cc()<BR>&nbsp;&nbsp;&nbsp;&nbsp; Dim arr(1, 0, 2)<BR>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox UBound(arr) &amp; "," &amp; UBound(arr, 2) &amp; "," &amp; UBound(arr, 3)<BR>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox LBound(arr) &amp; "," &amp; LBound(arr, 2) &amp; "," &amp; LBound(arr, 3)<BR>&nbsp;&nbsp;&nbsp;&nbsp; Stop<BR>&nbsp;End Sub<BR><BR></FONT><STRONG><IMG border=0 alt="" src="http://www.excelpx.com/UploadFile/2008-6/2008630224396067.jpg"><BR><BR>2,以区间表示下标,格式为 :(下界 to 上界),这时<BR><BR></STRONG>该维的下界(最小下标):下界;<BR>该维的上界(最大下标):上界;<BR>该维的元素的个数:上界-下界+1;<BR><BR>该数组元素的个数为:各维个数的乘积。<BR><BR><STRONG>arr(1 to 3)<BR></STRONG>——表示这个数组只有一维,下标是“1 to 3”,下界是1,上界是3,数组的元素个数是(3-1+1)=3</P>
<P>&nbsp;运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在“视图”菜单中调出本地窗口)<BR>&nbsp;Ubound函数返回数组的上界,后面的参数代表返回第几维<BR>&nbsp;Lbound函数返回数组的下界,后面的参数代表返回第几维<BR><BR>&nbsp;<FONT color=#0000ff>Sub dd()<BR>&nbsp;&nbsp;&nbsp;&nbsp; Dim arr(1 To 3)<BR>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox UBound(arr)<BR>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox LBound(arr)<BR>&nbsp;&nbsp;&nbsp;&nbsp; Stop<BR>&nbsp;End Sub<BR><BR><IMG border=0 alt="" src="http://www.excelpx.com/UploadFile/2008-6/2008630224397209.jpg"><BR><BR></FONT><STRONG>arr(1 to 3,3 to 4, -1 to 1)</STRONG>&nbsp;<BR>——&nbsp;表示该数组有三维,第一维下标是“1 to 3”,下界是1,上界是3;第二维下标是“3 to 4”,下界是3,上界是4;第三维下标是“-1 to 1”,下界是-1,上界是1;&nbsp;该数组的元素个数是(3-1+1)×(4-3+1)×(1-(-1)+1)=18<BR><BR>&nbsp;运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在“视图”菜单中调出本地窗口)<BR>&nbsp;Ubound函数返回数组的上界,后面的参数代表返回第几维<BR>&nbsp;Lbound函数返回数组的下界,后面的参数代表返回第几维<BR><BR><FONT color=#0000ff>&nbsp;Sub ee()<BR>&nbsp;&nbsp;&nbsp;&nbsp; Dim arr(1 To 3, 3 To 4, -1 To 1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox UBound(arr) &amp; "," &amp; UBound(arr, 2) &amp; "," &amp; UBound(arr, 3)<BR>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox LBound(arr) &amp; "," &amp; LBound(arr, 2) &amp; "," &amp; LBound(arr, 3)<BR>&nbsp;&nbsp;&nbsp;&nbsp; Stop<BR>&nbsp;End Sub<BR><BR><IMG border=0 alt="" src="http://www.excelpx.com/UploadFile/2008-6/2008630224342778.jpg"><BR><BR></FONT><FONT color=#cc00ff size=4><STRONG>二,数组元素的下标</STRONG></FONT></P>
<P>数组的每个元素,也分别有自己的下标,当声明了一个固定范围的数组后,其每个元素的下标也同时确定了</P>
<P>元素的下标标识了元素在数组中的相对位置,要知道元素的绝对位置,必须要知道该维度的下界是多少,然后用下标减去下界,得出该元素在该维度的绝对位置</P>
<P>元素某维度的绝对位置 = 该维度的下标 - 该维度的下界 + 1</P>
<P>看上面最后一个例子,我们随便抽出一个元素来看,如arr(3,4,0)这个元素<BR><BR>3代表他在第一维的绝对位置是3,因为第一维的下界是1,<BR>4代表第二维的绝对位置是2,因为第儿维的下界为3,<BR>0代表第三维的绝对位置为2,因为第三维的下界是-1<BR></P><BR>
<P align=right><FONT color=#000066>[此贴子已经被作者于2008-6-30 2:37:40编辑过]</FONT></P>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2 +10 收起 理由
徐淑颖 + 4
a785378066 + 6

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2008-6-30 02:35 | 显示全部楼层
回复

使用道具 举报

发表于 2008-6-30 02:55 | 显示全部楼层
回复

使用道具 举报

发表于 2008-6-30 04:13 | 显示全部楼层

向夜猫学习[em01]
回复

使用道具 举报

发表于 2008-6-30 04:16 | 显示全部楼层

是的,看到书上都是称呼为<strong><font color="#ff0000">下界上界</font></strong>
回复

使用道具 举报

发表于 2008-6-30 04:20 | 显示全部楼层

i don't understand.我打中文比英语慢.不好意思VBA中有哪个宏的教程在那里啊?
回复

使用道具 举报

发表于 2008-6-30 04:59 | 显示全部楼层

<p>学习</p>
回复

使用道具 举报

发表于 2008-6-30 06:18 | 显示全部楼层

<p>辛苦!学习!</p>
回复

使用道具 举报

发表于 2008-6-30 06:56 | 显示全部楼层

<p><font style="BACKGROUND-COLOR: #cce8cf;">学习,谢谢喵喵</font></p>
回复

使用道具 举报

发表于 2008-6-30 12:45 | 显示全部楼层

耗子与猫同家?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 06:19 , Processed in 0.365798 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表