宏运用入门及数组运用

上传人:平*** 文档编号:14565046 上传时间:2017-10-31 格式:DOC 页数:10 大小:264.85KB
返回 下载 相关 举报
宏运用入门及数组运用_第1页
第1页 / 共10页
宏运用入门及数组运用_第2页
第2页 / 共10页
宏运用入门及数组运用_第3页
第3页 / 共10页
宏运用入门及数组运用_第4页
第4页 / 共10页
宏运用入门及数组运用_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《宏运用入门及数组运用》由会员分享,可在线阅读,更多相关《宏运用入门及数组运用(10页珍藏版)》请在金锄头文库上搜索。

1、1、 宏命令的使用方法11 按图 1 步骤操作可添加控件及编写相关代码,图 2 为代码编写窗口图 1 在工作表中添加控件图 2 编写控件代码12 按图 3 所示步骤自定义函数后就可以像使用 Excel 函数一样运用它了,如图 4图 3 自定义函数图 4 自定义函数的使用13 按图 5 所示步骤编写自己的宏命令,例如在代码窗口输入如下代码:Sub sheetcount()Dim num As Integernum = ThisWorkbook.Sheets.CountRange(a1) = numEnd Sub此函数功能是求取工作薄中所有工作表的个数,按图 6 方法运行该宏命令,也可以按图 7

2、所示步骤执行宏命令图 5 编写宏命令图 6 运行宏命令图 7 在 Excel 中调用宏命令2、用 Array 创建数组按 Alt+F11 打开 VBE 窗口,插入一新的模块,在代码窗口中写入代码:Sub test()红绳子 = Array(辣 1, 辣 2, 辣 3, 辣 4, 辣 5, 辣 6, 辣 7, 辣 8, 辣 9, 辣10)End Sub按 F8,逐行运行代码,程序成功创建了一个数组,数组名称是“红绳子” ,辣 1, 辣2, 辣 3, 辣 4, 辣 5, 辣 6, 辣 7, 辣 8, 辣 9, 辣 10是数组元素。用 Array()创建数组,各元素之间用逗号隔开。元素如果是文本,要

3、用半角引号作定界符。练习,创建两个数组:数组名为 cName,数据为 8 个同学的姓名:林思明、曾玉婷、曾国文、林伟权、林兴发、刘卓怀、曾仙婷、林平数组名为 cj,数据为 8 个数值:99, 85, 92.5, 70, 78.5, 65, 84, 100参考答案:数组入门 01.xls 点击浏览该文件 推荐:ExcelHome 技术论坛的最佳学习方法 山菊花 -3、我们已经初步认识了数组,数组是把一组数保存到一个数组变量中,它有两个重要特征。它是一个变量,对一组数进行统一管理带来方便。上面建立的姓名数组,我们要把它写入到工作表区域 A1 向右连续 8 个单元格中,可用命令:Range(“a1:

4、h1”)=cname我们认识的这类数组,称为一维数组,一维数组是一个水平数组,相当于工作表中的行。如果要把姓名按垂直方向填充到单元格,可转置命令。如,把这个数组写入到 A1:A8单元格中:Range(“a1:a8”)= WorksheetFunction.Transpose(cname)练习:把数组 cname 分别写入到单元格 C4:J4、D8:D15。答案:数组入门 02.xls 点击浏览该文件第二个重要的特征,是数组元素的有序性,一组数据有序地保存到数组变量中。数组中,用数组名加序号(称索引值 )构成唯一的名称对元素进行引用。元素与序号一一对应,根据序号,可以修改和读取指定位置上的元素。

5、把一串姓名保存到数组 cName 中,数据在数组中按顺序保存,默认从 0 开始,依次是1、2、3,用 cName(0)表示第一个姓名、cName(1)表示第二个姓名,等等。在工作表中插入一个按钮,点击按钮,把姓名填入单元格 A1:A8 中:Private Sub CommandButton1_Click() cname = Array(林思明, 曾玉婷, 曾国文, 林伟权, 林兴发, 刘卓怀, 曾仙婷, 林平)For i = 1 To 8 Range(a & i) = cname(i - 1)NextEnd Sub数组序号(索引值)默认从 0 开始,也可以通过命令 OPTION BASE 1

6、修改为从 1 开始。该命令写在模块的前面。如果设定索引值从 1 开始,则上面的代码修改为:Private Sub CommandButton1_Click() cname = Array(林思明, 曾玉婷, 曾国文, 林伟权, 林兴发, 刘卓怀, 曾仙婷, 林平)For i = 1 To 8 Range(a & i) = cname(i ) 工作表行号与数组序号相吻合NextEnd Sub参考:数组入门 03.xls 点击浏览该文件-4、想起瑞士军刀Array()很好用,但有时 Split()更好用,我们取出这瑞士军刀的第二利器。Split()把一个文本,根据指定的分隔符,建立一个数组。看一个

7、实例:单元格 A1 中有一串姓名:朱清燕(女), 林鑫,林秋静( 女),林永鑫,林云艳(女),林嘉惠( 女),曾文婷( 女),林悦,陈诚,林伟健,赖紫岚( 女),曾雁( 女),赖文强 ,钟娟(女),张琪( 女),林文彬, 黄晓婷( 女),李朕,林依婷(女), 林佳利(女), 曾德福要求:用 Split(),把这串文本创建为一个数组:Sub test()XM = Split(Range(a1), ,)End Sub同样可以用本地窗口检查转换结果。注意,Split()函数把文本转换成数组,并不受 Option Base 的影响,索引号总是从 0 开始。很自然想知道,A1 单元格中有多少个姓名?创建

8、的数组有多少个元素?瑞士军刀中有把小尺子,可以量一量:Ubound()返回数组的最大下标。Sub test()xm = Split(Range(a1), ,)MsgBox 数组最大下标是 & UBound(xm) & Chr(13) _& 数组共有 & UBound(xm) + 1 & 个元素End Sub参考:数组入门 04.xls 点击浏览该文件5、三维表示一个空间,四维、五维、六维呢?三维已经可以代表宽广无垠的宇宙,而数组却允许声明为 4 维、5 维、6 维,直至 60维。这是一个什么样的概念?我曾经打过一个这样的比方:6、由工作表区域创建数组。与 Array()和 Split()相比,

9、由工作表区域创建数组更加直观而简易,一个等号便解决问题:如:用 Sheet2 工作表 A1:E83 的数据创建一个数组:Private Sub CommandButton1_Click()arr = Sheet2.Range(a1:e83)End Sub如果把该数据复制到 Sheet1 工作表相同区域,用数组操作,代码如下:Private Sub CommandButton1_Click()arr = Sheet2.Range(a1:e83)Range(a1:e83) = arrEnd Sub共两句,前一句把数据保存到数组,第二句,把数组内容写入到工作表。选择第 3 行代码,按 F9 设置断点

10、。点击按钮运行代码,到该行,程序自动中断,此时,可从本地窗口中观察到运行结果,一个 83 行 2 列的数组已经创建。也可以按 F8 逐行运行代码,查看数组创建的结果。参考:数组入门 05.xls 点击浏览该文件7、随心所欲创建数组以上几种办法都是根据已有的数据创建数组。实际使用中,更多时候,程序需要先创建数组,然后对数组进行赋值和修改。Private、 Public、Dim、Static ,这些语句都可声明数组变量,区别在于声明的数组的使用范围,可查看各语句的帮助。新建一个过程:Sub 声明数组()Dim MyArray(10) 在过程中间声明一个数组,过程结束,本数组将被释放。MyArray

11、(1) = 100 给数组赋值MyArray(5) = 90End Sub按 F8 逐行运行程序,在本地窗口中可以看到数组 MyArray()已成功创建。Dim 是声明变量的语句;MyArray 是数组名称;10 是数组最大下标。当 Option Base 0 的模式下,数组的序号(索引值)从 0 到 10,表示数组有 11 个元素,当 Option Base 1 的模式下,数组的索引值从 1 到 10,该语句创建的数组共有 10 个元素。上面声明的数组是一维数组,数组最大可以定义 60 维。多维数组的表示方法,维与维之间用逗号相隔。Sub 声明数组 b()Dim Data(10,5) 声明一

12、个二维数组Data (1,1) = “A001” 给数组赋值Data (1,2) = 90Data (3,1) = “A003” Data (3,2) = 80End Sub这里,Data 是一个二维数组。二维数组的两维,我们通常用 “行、列”称呼它,如Data,最大行号是 10,最大列号是 5,在 Option Base 1 模式下,表示是一个 10 行 5 列共50 个元素的数组空间。在 Option Base 0 模式下,表示一个 11 行 6 列共 66 个元素的数组空间。二维数组是使用频率最高的数组形式,因为我们的工作表也是二维的。用工作表来领会二维数组,将会更加直观:Data(1,

13、1)相当于 Cells(1,1),表示第 1 行,第 1 列;Data(5,3)相当于 Cells(5,3),表示第 5 行,第 3 列。下面的语句,声明的是一个三维数组:Sub 声明数组 b()Dim x(3,30,3) X (1,1,1) = “1 班” 给数组赋值X (1,1,2) = “张三”X (1,1,3) = 88 X (1,2,1) = “1 班” 给数组赋值X (1,2,2) = “李四”X (1,2,3) = 95 X (2,1,1) = “2 班” 给数组赋值X (2,1,2) = “刘日”X (2,1,3) = 92 End Sub此主题相关图片如下:我们可以用工作簿的

14、概念来迁移领会三维数组:X(1,2,3):第 1 个工作表第 2 行第 3 列;X(2,14,10):第 2 个工作表第 14 行第 10 列。假如我们要测量数组各维的最大下标,可以在 UBound()函数使用第二个参数:UBound(x,1),返回数组 x 第 1 维的最大下标;UBound(x,2),返回数组 x 第 2 维的最大下标;UBound(x,3),返回数组 x 第 3 维的最大下标。参考:数组入门 06.xls 点击浏览该文件8、进阶操作声明数组声明数组还可以根据需要自己指定下标和上标,而且不受 Option Base 的影响:Sub 声明数组()Dim cArr(11 To

15、20) 声明一个数组 cArr,下标从 11 到 20,共有 10 个元素。cArr(11) = 上cArr(12) = 中cArr(13) = 下End Sub数组的索引值还允许为负整数:Sub 声明数组()Dim nArr(-10 To 10) 声明一个数组 nArr,下标从-10 到 10,共 21 个元素。nArr(-10) = 123nArr(-9) = 456nArr(-2) = 789End Sub可变的下标给你的程序带来灵活性,推荐另一个函数:UBound()函数的姐妹花LBound()。LBound()可以返回指定数组维可用的最小下标。如:xb = LBound(nArr)MsgBox xb声明数组时,还允许像声明单值变量一样为数组指定为数据类型。Sub 声明数组()Dim cArr(11 To 20) As StringcArr(11) = 上cArr(12) = 中cArr(13) = 下End SubAs String 表示数组 cArr()是一个字符型变量,在本地窗口中可以看到,没有赋值的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号