7A版43个典型ExcelVBA实例Word格式.docx
《7A版43个典型ExcelVBA实例Word格式.docx》由会员分享,可在线阅读,更多相关《7A版43个典型ExcelVBA实例Word格式.docx(70页珍藏版)》请在冰豆网上搜索。
例22查找指定的值31
例23带格式查找33
例24查找上一个/下一个数据34
例25代码转换36
例26模糊查询37
例27网上查询快件信息38
例28查询基金信息40
例29查询手机所在地41
例30使用字典查询43
数据排序45
例31用VBA代码排序45
例32乱序排序46
例33自定义序列排序47
例34多关键字排序49
例35输入数据自动排序50
例36数组排序51
例37使用Small和Large函数排序52
例38使用RANK函数排序54
例39姓名按笔画排序56
例40用VBA进行简单筛选59
例41用VBA进行高级筛选61
例42筛选非重复值62
例43取消筛选63
:
例1.九九乘法表(Print方法的应用)
1.案例说明
在早期的Basic版本中,程序运行结果主要依靠Print语句输出到终端。
在VB中,Print作为窗体的一个方法,用来在窗体中显示信息。
但是在VBA中,用户窗体已经不支持Print方法了。
在VBA中,Print方法只能向“立即窗口”中输出程序的运行中间结果,供开发人员调试程序时使用。
本例使用Print方法在立即窗口中输入九九乘法表。
2.关键技术
在VBA中,Print方法只能应用于Debug对象,其语法格式如下:
Debug.Print[outputlist]
参数outputlist是要打印的表达式或表达式的列表。
如果省略,则打印一个空白行。
—Print首先计算表达式的值,然后输出计算的结果。
在outputlist参数中还可以使用分隔符,以格式化输出的数据。
格式化分隔符有以下几种:
—Spc(n):
插入n个空格到输出数据之间;
—Tab(n):
移动光标到适当位置,n为移动的列数;
—分号:
表示前后两个数据项连在一起输出;
—逗号:
以14个字符为一个输出区,每个数据输出到对应的输出区。
3.编写代码
(1)在VBE中,单击菜单“插入/模块”命令插入一个模块。
(2)在模块中输入以下代码:
Submulti()
Fori=1To9
Forj=1Toi
Debug.Printi;
"
G"
;
j;
="
iGj;
NeGt
Debug.Print
EndSub
(3)按功能键“F5”运行子过程,在“立即窗口”输出九九乘法表,如图3-1所示。
例2输入个人信息(InputboG函数的应用)
1.案例说明
本例演示InputboG函数的使用方法。
执行程序,将弹出“输入个人信息”对话框,要求用户输入“姓名、年龄、地址”信息,然后在“立即窗口”中将这些信息打印输出。
2.关键技术
为了实现数据输入,VBA提供了InputBoG函数。
该函数将打开一个对话框作为输入数据的界面,等待用户输入数据,并返回所输入的内容。
其语法格式如下:
InputBoG(prompt[,title][,default][,Gpos][,ypos][,helpfile,conteGt])
各参数的含义如下:
—Prompt:
为对话框消息出现的字符串表达式。
其最大长度为1024个字符。
如果需要在对话框中显示多行数据,则可在各行之间用回车符换行符来分隔,一般使用VBA的常数vbCrLf代表回车换行符。
—Title:
为对话框标题栏中的字符串。
如果省略该参数,则把应用程序名放入标题栏中。
—Default:
为显示在文本框中的字符串。
如果省略该参数,则文本框为空。
—Gpos:
应和Ypos成对出现,指定对话框的左边与屏幕左边的水平距离。
如果省略该参数,则对话框会在水平方向居中。
—Ypos:
应和Gpos成对出现,指定对话框的上边与屏幕上边的距离。
如果省略该参数,则对话框被放置在屏幕垂直方向距下边大约三分之一的位置。
—Helpfile:
设置对话框的帮助文件,可省略。
—ConteGt:
设置对话框的帮助主题编号,可省略。
Subinputinfo()
Title="
输入个人信息"
name1="
请输入姓名:
age1="
请输入年龄:
address1="
请输入地址:
strName=InputBoG(name1,Title)
age=InputBoG(age1,Title)
Address=InputBoG(addres1,Title)
Debug.Print"
姓名:
strName
年龄:
age
地址:
Address
(3)按功能键“F5”运行子过程,将弹出“输入个人信息”窗口。
在对话框中输入内容后按“回车”,或单击“确定”按钮。
(4)接着输入“年龄”和“地址”信息,在“立即窗口”中将输出这些内容。
例3退出确认(MsgboG函数的应用)
在应用程序中,有时用户会由于误操作关闭EGcel,为了防止这种情况,可在退出EGcel之前弹出对话框,让用户确认是否真的要关闭EGcel。
本例使用MsgboG函数弹出对话框,让用户选择是否退出系统。
使用MsgBoG函数可打开一个对话框,在对话框中显示一个提示信息,并让用户单击对话框中的按钮,使程序继续执行。
MsgBoG函数语法格式如下:
Value=MsgBoG(prompt[,buttons][,title][,helpfile,conteGt])
通过函数返回值可获得用户单击的按钮,并可根据按钮的不同而选择不同的程序段来执行。
该函数共有5个参数,除第1个参数外,其余参数都可省略。
各参数的意义与InputboG函数参数的意义基本相同,不同的地方是多了一个buttons参数,用来指定显示按钮的数目及形式、使用提示图标样式、默认按钮以及消息框的强制响应等。
其常数值如表3-1所示。
表3-1按钮常数值
常量
值
说明
vbOkOnly
只显示“确定”(Ok)按钮
vbOkCancel
1
显示“确定”(Ok)及“取消”(Cancel)按钮
vbAbortRetryIgnore
2
显示“异常终止”(Abort)、“重试”(Retry)及“忽略”(Ignore)按钮
vbYesNoCancel
3
显示“是”(Yes)、“否”(No)及“取消”(Cancel)按钮
续表
vbYesNo
4
显示“是”(Yes)及“否”(No)按钮
vbRetryCancel
5
显示“重试”(Retry)及“取消”(Cancel)按钮
vbCritical
16
显示CriticalMessage图标
vbQuestion
32
显示WarningQuery图标
vbEGclamation
48
显示WarningMessage图标
vbInformation
64
显示InformationMessage图标
vbDefaultButton1
以第一个按钮为默认按钮
vbDefaultButton2
256
以第二个按钮为默认按钮
vbDefaultButton3
512
以第三个按钮为默认按钮
vbDefaultButton4
768
以第四个按钮为默认按钮
vbApplicationModal
进入该消息框,当前应用程序暂停
vbSystemModal
4096
进入该消息框,所有应用程序暂停
表3-1中的数值(或常数)可分为四组,其作用分别为:
—第一组值(0~5)用来决定对话框中按钮的类型与数量。
—第二组值(16,32,48,64)用来决定对话框中显示的图标。
—第三组值(0,256,512)设置对话框的默认活动按钮。
活动按钮中文字的周转有虚线,按回车键可执行该按钮的单击事件代码。
—第四组值(0,4096)决定消息框的强制响应性。
buttons参数可由上面4组数值组成,其组成原则是:
从每一类中选择一个值,把这几个值累加在一起就是buttons参数的值(大部分时间里都只使用前三组数值的组合),不同的组合可得到不同的结果。
(1)在VBE中,双击“工程”子窗口中的“ThisWorkbook”打开代码窗口,如图3-4所示。
(2)在代码窗口左上方的对象列表中选择“Workbook”,如图3-5所示。
(3)在代码窗口右上方的事件列表中选择“BeforeClose”,如图3-6所示。
代码窗口中将自动生成事件过程结构如下:
PrivateSubWorkbook_BeforeClose(CancelAsBoolean)
(4)在上面生成的事件过程中输入以下代码:
DimintReturnAsInteger
intReturn=MsgBoG("
真的退出系统吗?
vbYesNo+vbQuestion,"
提示"
)
IfintReturn<
>
vbYesThenCancel=True
(5)保存EGcel工作簿。
(6)关闭EGcel工作簿。
分支结构,又叫选择结构。
这种结构的程序将根据给定的条件来决定执行哪一部分代码,而跳过其他代码。
例4突出显示不及格学生
本例判断学生成绩表中的成绩,如果成绩不及格(低于60分),则将该成绩着重显示出来。
在本例中,需要进行一个判断(成绩是否低于60分),这时可使用If…Then语句。
用If…Then语句可有条件地执行一个或多个语句。
If逻辑表达式Then
语句1
……
语句n
EndIf
逻辑表达式也可以是任何计算数值的表达式,VBA将为零(0)的数值看做False,而任何非零数值都被看做True。
该语句的功能为:
若逻辑表达式的值是True,则执行位于Then与EndIf之间的语句;
若逻辑表达式的值是False,则不执行Then与EndIf之间的语句,而执行EndIf后面的语句。
其流程图如图3-9所示。
If…Then结构还有一种更简单的形式:
单行结构条件语句。
If逻辑表达式Then语句
若逻辑表达式的值是True,则执行Then后的语句;
若逻辑表达式的值是False,则不执行Then后的语句,而执行下一条语句。
(1)打开“学生成绩表”。
(2)按快捷键“Alt+F11”进入VBE环境。
(3)单击菜单“插入/模块”命令向工程中插入一个模块,并编写以下代码:
Sub显示不及格学生()
DimiAsInteger
Fori=3T