《vba常用代码大全.doc》由会员分享,可在线阅读,更多相关《vba常用代码大全.doc(55页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、前言我们平时在工作表单元格的公式中常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBA中不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。第1.1例ASC函数一、题目:要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII值。二、代码:Sub示例_1_01()Dim myNum1%, myNum2%myNum1 = Asc(Excel)返回69
2、myNum2 = Asc(e)返回101a1 = myNum1= : b1 = myNum1a2 = myNum2= : b2 = myNum2End Sub三、代码详解1、Sub示例_1_01():宏程序的开始语句。2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。也可以写为Dim myNum1 As Integer。Integer变量存储为16位(2个字节)的数值形式,其范围为-32,768到32,767之间。Integer的类型声明字符是百分比符号(%)。3、myNum1 = Asc(Excel):把Asc函数的值赋给变量myNum1。Asc函数
3、返回一个Integer,代表字符串中首字母的字符的ASCII代码。语法Asc(string)必要的string(字符串)参数可以是任何有效的字符串表达式。如果string中没有包含任何字符,则会产生运行时错误。4、myNum2 = Asc(e):把Asc函数的值赋给变量myNum2。这里返回小写字母e的ASCII代码101。5、a1 = myNum1= : b1 = myNum1:把字符串“myNum1=“赋给A1单元格,把变量myNum1的值赋给B1单元格。6、a2 = myNum2= : b2 = myNum2:把字符串“myNum2=“赋给A2单元格,把变量myNum2的值赋给B2单元格
4、。7、End Sub:程序的结束语句,和“Sub示例_1_01()”相对应。第1.2例Chr函数一、题目:要求编写一段代码,运用Chr函数将ASCII值转换为对应的字符。二、代码:Sub示例_1_02()Dim myChar1$, myChar2$myChar1 = Chr(69)返回E。myChar2 = Chr(101)返回e。a1 = myChar1= : b1 = myChar1a2 = myChar2= : b2 = myChar2End Sub三、代码详解1、Sub示例_1_02():宏程序的开始语句。2、Dim myChar1$, myChar2$:变量myChar1和myCha
5、r2声明为字符串变量。也可以写为Dim myChar1 As String。String之字符码的范围是0到255。字符集的前128个字符(0到127)对应于标准的U.S.键盘上的字符与符号。这前128个字符与ASCII字符集中所定义的相同。后128个字符(128到255)则代表特殊字符,例如国际字符,重音符号,货币符号及分数。String的类型声明字符为美元号($)。3、myChar1 = Chr(69):把Chr(69)的值赋给变量myChar1。这里返回大写字母E。Chr函数根据字符代码返回一个字符。语法Chr(charcode)必要的charcode(字符代码)参数是用来识别某字符的。
6、4、myChar2 = Chr(101):把Chr函数的值赋给变量myChar2。这里返回小写字母e。5、a1 = myChar1= : b1 = myChar1:把字符串“myChar1=“赋给A1单元格,把变量myChar1的值赋给B1单元格。6、a2 = myChar2= : b2 = myChar2:把字符串“myChar2=“赋给A2单元格,把变量myChar2的值赋给B2单元格。7、End Sub:程序的结束语句,和“Sub示例_1_02()”相对应。第1.3例Choose函数一、题目:要求编写一段代码,运用Choose函数根据指定数字选择对应的字符串。二、代码:Sub示例_1_0
7、3()Dim Num%Num=2MsgBoxChoose(Num, 一月, 二月, 三月)End Sub三、代码详解1、Sub示例_1_03():宏程序的开始语句。宏名为示例_1_03。2、Dim Num%:变量Num声明为整型变量。3、Num=2:把2赋给变量Num。4、MsgBoxChoose(Num, 一月, 二月, 三月):Choose函数从参数列表中选择并返回一个值。语法Choose(index, choice-1, choice-2, . , choice-n)Choose会根据index的值来返回选择项列表中的某个值。如果index是1,则Choose会返回列表中的第1个选择项。
8、如果index是2,则会返回列表中的第2个选择项,以此类推。Index是必要参数,数值表达式或字段,它的运算结果是一个数值,且界于1和可选择的项目数之间。当index小于1或大于列出的选择项数目时,Choose函数返回Null。如果index不是整数,则会先四舍五入为与其最接近的整数。第1.4例Cos函数一、题目:要求编写一段代码,运用Cos函数根据指定角度的余弦计算其正割的值。二、代码:Sub示例_1_04()Dim jiaodu, zengejiaodu = 1.3zenge = 1 /Cos(jiaodu)MsgBox“角度为”& jiaodu &“的正割的值”& zengeEnd Su
9、b三、代码详解1、Sub示例_1_04():宏程序的开始语句。宏名为示例_1_04。2、Dim jiaodu, zenge:两个变量都被指定为可变型数据类型。当声明常数、变量或参数时,若无指定数据类型则会自动的指定成Variant(可变型)数据类型。声明成Variant数据类型的变量可以为字符串、日期、时间、Boolean或数值。3、jiaodu = 1.3:把以“弧度”为单位的角度1.3赋给变量jiaodu。4、zenge = 1 / Cos(jiaodu):利用1/余弦算得正割(sec())的值,赋给变量zenge。Cos函数返回一个角的余弦值。其参数是表示一个以弧度为单位的角。5、Msg
10、Box“角度为”& jiaodu &“的正割的值”& zenge:利用MsgBox函数显示算得的正割(sec())的值。第1.5例Date函数一、题目:要求编写一段代码,运用Date函数显示系统日期的值。二、代码:Sub示例_1_05()Dim myDatemyDate = DateMsgBox“系统日期为”& myDateEnd Sub三、代码详解1、Sub示例_1_05():宏程序的开始语句。宏名为示例_1_05。2、Dim myDate:变量myDate被指定为可变型数据类型。3、myDate = Date:把系统日期的值赋给变量myDate。Date函数返回系统当前的日期。4、MsgB
11、ox“系统日期为”& myDate:利用MsgBox函数显示系统日期的值。第1.6例DateAdd函数一、题目:要求编写一段代码,运用DateAdd函数显示返回一定间隔后的日期。二、代码:Sub示例_1_06()Dim dyrq As DateDim jglx As StringDim n As IntegerDim Msgjglx = mdyrq = InputBox(请输入一个日期)n = InputBox(输入增加月的数目:)Msg = 新日期: & DateAdd(jglx, n, dyrq)MsgBox MsgEnd Sub三、代码详解1、Sub示例_1_06():宏程序的开始语句。
12、宏名为示例_1_06。2、Dim dyrq As Date:变量dyrq声明为日期对象型数据类型。其余几个变量分别是字符串型、整型和可变型变量。3、jglx = m:用字符m来指定以“月份”作为间隔。4、dyrq = InputBox(请输入一个日期):用InputBox函数来让用户输入一个日期,并把用户输入的日期赋给变量dyrq。5、n = InputBox(输入增加月的数目:):用InputBox函数来让用户输入间隔月的数目,并把用户输入的值赋给变量n。6、Msg = 新日期: & DateAdd(jglx, n, dyrq):用DateAdd函数计算得到的新的日期和字符串“新日期:”连接
13、起来赋给变量Msg。DateAdd函数返回一个日期,这一日期加上了一个时间间隔。语法DateAdd(interval, number, date)DateAdd函数语法中有下列命名参数:interval必要。字符串表达式,是所要加上去的时间间隔。它具有好多设定值,比如”m”为月;”d”为日;”yyyy”为年等等。number必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。date必要。表示日期的文字。7、MsgBoxMsg:利用MsgBox函数显示Msg的值。第1.7例DateDiff函数一、题目:要求编写一段代码,运用DateD
14、iff函数返回某个指定日期距离今天的天数。二、代码:Sub示例_1_07()Dim zdrq As DateDim Msgzdrq = InputBox(请输入一个日期:)Msg = 离开今天的天数: & DateDiff(d, Now, zdrq)MsgBox MsgEnd Sub三、代码详解1、Sub示例_1_07():宏程序的开始语句。宏名为示例_1_07。2、Dim zdrq As Date:变量zdrq声明为日期对象型数据类型。3、zdrq = InputBox(请输入一个日期):用InputBox函数来让用户输入一个日期,并把用户输入的日期赋给变量zdrq。4、Msg = 离开今天
15、的天数: & DateDiff(d, Now, zdrq):用DateDiff函数计算得到的结果和字符串“离开今天的天数:”连接起来赋给变量Msg。5、MsgBoxMsg:利用MsgBox函数显示Msg的值。DateDiff函数可用来决定两个日期之间所指定的时间间隔数目。例如,可以使用DateDiff来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。DateDiff(interval, date1, date2, firstdayofweek, firstweekofyear)DateDiff函数语法中有下列命名参数:interval必要。字符串表达式,是所要加上去的时间间隔。它
16、具有好多设定值,与DateAdd函数相同;此例中的d,表示天数;Date1,date2必要;计算中要用到的两个日期。Firstdayofweek可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。firstweekofyear可选。指定一年的第一周的常数。如果未予指定,则以包含1月1日的星期为第一周。第1.8例DatePart函数一、题目:要求编写一段代码,运用DatePart函数返回某个指定日期是在一年的哪一个季度。二、代码:Sub示例_1_08()Dim zdrq As DateDim Msgzdrq = InputBox(请输入一个日期:)Msg = 季度: & Date
17、Part(q, zdrq)MsgBox MsgEnd Sub三、代码详解1、Sub示例_1_08():宏程序的开始语句。宏名为示例_1_08。2、Dim zdrq As Date:变量zdrq声明为日期对象型数据类型。3、zdrq = InputBox(请输入一个日期):用InputBox函数来让用户输入一个日期,并把用户输入的日期赋给变量zdrq。4、Msg = 季度: & DatePart(q, zdrq):用DatePart函数计算得到的结果和字符串“季度:”连接起来赋给变量Msg。5、MsgBoxMsg:利用MsgBox函数显示Msg的值。DatePart函数DatePart(inte
18、rval, date, , firstdayofweek, firstweekofyear)语法中有下列命名参数:interval必要。字符串表达式,是所要加上去的时间间隔。它具有好多设定值,与DateAdd函数相同;此例中的q,表示季度;Date,必要;计算中要用到的两个日期。Firstdayofweek可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。firstweekofyear可选。指定一年的第一周的常数。如果未予指定,则以包含1月1日的星期为第一周。第1.9例DateSerial函数一、题目:要求编写一段代码,运用DateSerial函数返回指定日期的Date类型。
19、二、代码:Sub示例_1_09()Dim zdrqzdrq = DateSerial(2008, 8, 8)MsgBox zdrqEnd Sub三、代码详解1、Sub示例_1_09():宏程序的开始语句。宏名为示例_1_09。2、Dim zdrq:变量zdrq声明为可变型数据类型。3、zdrq = DateSerial(2008, 8, 8):DateSerial函数转换所得的结果赋给变量zdrq。DateSerial函数返回指定日期年月日的日期格式。语法DateSerial(year, month, day)DateSerial函数语法有下列的命名参数:year必要;整型。从100到9999
20、间的整数,或一数值表达式。month必要;整型。任何数值表达式。day必要;整型。任何数值表达式。4、MsgBoxzdrq:利用MsgBox函数显示zdrq的值。第1.10例DateValue函数一、题目:要求编写一段代码,运用DateValue函数返回指定日期的Date类型。二、代码:Sub示例_1_010()Dim zdrqzdrq = DateValue(August 8, 2008)MsgBox zdrqEnd Sub三、代码详解1、Sub示例_1_010():宏程序的开始语句。宏名为示例_1_010。2、Dim zdrq:变量zdrq声明为可变型数据类型。3、zdrq = DateV
21、alue(August 8, 2008):DateSerial函数转换所得的结果赋给变量zdrq。4、MsgBoxzdrq:利用MsgBox函数显示zdrq的值。DateValue函数将字符串转换为日期格式。语法DateValue (date)DateValue函数的参数:date必要;通常是字符串表达式,表示从100年1月1日到9999年12月31日之间的一个日期。但是,date也可以是任何表达式,其所代表的日期、时间在上述范围内。第1.11例Day函数一、题目:要求编写一段代码,运用Day函数返回指定日期的日。二、代码:Sub示例_1_11()Dim zdrqzdrq = #2008-12
22、-8#MsgBoxzdrq & 这天的日为: & Day(zdrq)End Sub三、代码详解1、Sub示例_1_11():宏程序的开始语句。宏名为示例_1_11。2、Dim zdrq:变量zdrq声明为可变型数据类型。3、zdrq = #2008- 8- 8#:把日期2008-8-8赋给变量zdrq。4、MsgBoxzdrq & 这天的日为: & Day(zdrq):利用MsgBox函数显示Day(zdrq)的值。Day函数返回一个其值为1到31之间的整数,表示一个月中的某一日。语法Day (date)Day函数的参数:date必要的,可以是任何能够表示日期的Variant、数值表达式、字符
23、串表达式或它们的组合。第1.12例Dir函数一、题目:要求编写一段代码,运用Dir函数返回一个文件夹的文件列表。二、代码:Sub示例_1_12()Dim wjmwjm = Dir(C:WINDOWSWIN.ini)MsgBox wjmwjm = Dir(C:WINDOWS*.ini)wjm = DirEnd Sub三、代码详解1、Sub示例_1_12():宏程序的开始语句。宏名为示例_1_12。2、Dim wjm:变量wjm声明为可变型数据类型。3、wjm = Dir(C:WINDOWSWIN.ini):如果该文件存在则返回“WIN.INI”(在C:Windows文件夹中),把返回的文件名赋给
24、变量wjm。如果该文件不存在则wjm=”。4、wjm = Dir(C:WINDOWS*.ini):返回带指定扩展名的文件名。如果超过一个*.ini文件存在,函数将返回按条件第一个找到的文件名。5、wjm = Dir:若第二次调用Dir函数,但不带任何参数,则函数将返回同一目录下的下一个*.ini文件。Dir函数返回一个字符串String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。Dir(pathname, attributes)Dir函数的语法具有以下几个部分:pathname可选参数。用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器
25、。如果没有找到pathname,则会返回零长度字符串()。attributes可选参数。常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配pathname但不包含属性的文件。第1.13例Fix函数一、题目:要求编写一段代码,运用Fix函数返回某数值的整数部分。二、代码:Sub示例_1_13()MsgBox“99.8的整数部分是:”& Fix(99.8)MsgBox“99.8的整数部分是:”& Fix(-99.8)End Sub三、代码详解1、Sub示例_1_13():宏程序的开始语句。宏名为示例_1_13。2、MsgBox“99.8的整数部分是:”& Fix(99.8):利用Ms
26、gBox函数显示Fix(99.8)的值。3、MsgBox“-99.8的整数部分是:”& Fix(-99.8):利用MsgBox函数显示Fix(-99.8)的值。Fix函数返回参数的整数部分。语法Fix(number)number必要的是任何有效的数值表达式。Int及Fix函数在返回某数值的整数部分时有何不同。当参数为负数时,Int函数返回小于或等于该参数之最大整数,而Fix函数则返回大于或等于该参数之最小整数。第1.14例Format函数一、题目:要求编写一段代码,运用Format函数对指定字符串返回指定格式的输出。二、代码:Sub示例_1_14()Dim sj, rqsj = “19:08:
27、43”rq = “2008-8-8”MsgBox sj &“的格式设为hh:mm:ss AMPM:”& Format(sj, hh:mm:ss AMPM)返回07:08:43下午。MsgBox rq &“的格式设为dddd, mmm d yyyy:”& Format(rq, dddd, mmm d yyyy)End Sub三、代码详解1、Sub示例_1_14():宏程序的开始语句。宏名为示例_1_14。2、Dim sj,rq:变量sj,rq声明为可变型数据类型。3、sj =“19:08:43”:把字符串”19:08:43”赋给变量sj。4、rq =“2008-8-8”:把字符串”2008-8-
28、8”赋给变量rq。5、MsgBox sj &“的格式设为hh:mm:ss AMPM:”& Format(sj, hh:mm:ss AMPM):利用MsgBox函数显示Format函数的值。返回07:08:43下午。6、MsgBox rq &“的格式设为dddd, mmm d yyyy:”& Format(rq, dddd, mmm d yyyy):利用MsgBox函数显示Format函数的值。代码执行后如图5-14所示。Format函数根据有效的命名表达式来对指定的表达式进行格式化。Format(expression, format, firstdayofweek, firstweekofye
29、ar)Format函数的语法具有下面几个部分:expression必要参数。任何有效的表达式。format可选参数。有效的命名表达式或用户自定义格式表达式。firstdayofweek可选参数。常数,表示一星期的第一天。firstweekofyear可选参数。常数,表示一年的第一周。第1.15例Hour函数一、题目:要求编写一段代码,运用Hour函数对指定字符串返回小时数。二、代码:Sub示例_1_15()Dim sjsj = 3:45:20 PM指定一时间字符串。MsgBox sj & 的小时是: & Hour(sj)End Sub三、代码详解1、Sub示例_1_15():宏程序的开始语句。
30、宏名为示例_1_15。2、Dim sj:变量sj声明为可变型数据类型。3、sj =“3:45:20 PM”:把字符串”3:45:20 PM”赋给变量sj。4、MsgBox sj &的小时是: & Hour(sj):利用MsgBox函数显示Hour函数的值。代码执行后如图5-15所示。Hour函数返回一个其值为0到23之间的整数,表示一天之中的某一钟点。语法Hour(time)Time必要的参数,可以是任何能够表示时刻的数值表达式、字符串表达式或它们的组合。第1.16例IIF函数一、题目:要求编写一段代码,运用IIF函数根据判断条件返回结果。二、代码:Sub示例_1_16()Dim Cheshi
31、 As String, dx As Integerdx = 560Cheshi = IIF(dx 1000, 大, 小)MsgBox dx & 比1000要 & Cheshi & & Abs(1000 - dx)End Sub三、代码详解1、Sub示例_1_16():宏程序的开始语句。宏名为示例_1_16。2、Dim Cheshi As String, dx As Integer:变量Cheshi声明为字符串数据类型,dx声明为整型。3、dx= 560:把数字560赋给变量dx。4、Cheshi = IIF(dx 1000, 大, 小):根据变量dx是否大于1000的条件来判断,并且把返回的结
32、果赋给变量Cheshi。5、MsgBoxdx & 比1000要 & Cheshi & & Abs(1000 - dx):利用MsgBox函数显示最后的值。其中Abs函数是取表达式的绝对值函数。IIF函数根据表达式的值,来返回两部分中的其中一个。IIF(expr, truepart, falsepart)IIF函数的语法含有下面这些命名参数:expr必要参数。用来判断真伪的表达式。truepart必要参数。如果expr为True,则返回这部分的值或表达式。falsepart必要参数。如果expr为False,则返回这部分的值或表达式。第1.17例InputBox函数一、题目:要求编写一段代码,运
33、用InputBox函数,用户输入一定范围的数值并返回结果。二、代码:Sub Sub示例_1_17()Dim Msg$, bt$, Default$, MyValue,aaMsg = 输入一个10到25之间的数值:bt = InputBox函数示例Default = 10设置缺省值。100:MyValue = InputBox(Msg,bt, Default)If MyValue 25 Thenaa = MsgBox(输入数值超出范围,请重新输入或者退出。, 1)If aa vbOK Then Exit SubGoTo 100ElseMsgBox 你输入的是 & MyValueEnd IfEnd
34、 Sub三、代码详解1、Sub示例_1_17():宏程序的开始语句。宏名为示例_1_17。2、Dim Msg$, bt$, Default, MyValue,aa:变量Msg、Default和bt声明为字符串数据类型,其它的没有显式声明,都为可变型数据类型。3、Msg = 输入一个10到25之间的数值:设置提示信息,把字符串赋给变量Msg。4、bt = InputBox函数示例:设置标题,把字符串赋给变量bt。5、Default = 10:设置缺省值,把字符串赋给变量Default。6、MyValue = InputBox(Msg,bt, Default):通过InputBox函数显示信息、标
35、题及缺省值,把函数返回值赋给变量MyValue。7、If MyValue 25 Then:如果InputBox函数返回的数值小于10或者大于25,那么执行下面的语句。8、aa = MsgBox(输入数值超出范围,请重新输入或者退出。, 1):如果InputBox函数返回的数值超出了范围,显示一个消息框,消息框里面的第2个参数是1,表示消息框上有两个按钮:“确定”和“取消”按钮。并把消息框返回的结果赋给变量aa。9、If aa vbOK Then Exit Sub:如果用户按了消息框上的“取消”按钮,就退出本程序。10、GoTo 100:如果用户按了消息框上的“确定”按钮,就转而从行号100开始
36、执行代码。11、MsgBox 你输入的是 & MyValue:如果用户输入了符合要求的数值,按了回车键或者“确定”按钮,消息框显示用户输入的值。InputBox函数在一对话框来中显示提示,等待用户输入正文或按下按钮,并返回包含文本框内容的字符串。语法InputBox(prompt, title , default , xpos , ypos , helpfile, context)InputBox函数的语法具有以下几个命名参数:Prompt必需的。作为对话框消息出现的字符串表达式。Prompt的最大长度大约是1024个字符,由所用字符的宽度决定。如果Prompt包含多个行,则可在各行之间用回车
37、符(Chr(13)、换行符(Chr(10)或回车换行符的组合(Chr(13) & Chr(10)来分隔。Title可选的。显示对话框标题栏中的字符串表达式。如果省略Title,则把应用程序名放入标题栏中。Default可选的。显示文本框中的字符串表达式,在没有其它输入时作为缺省值。如果省略Default,则文本框为空。其它参数省略,请参见Excel帮助文件。第1.18例Instr函数一、题目:要求编写一段代码,运用Instr函数,在一字符串中查找另一字符串并返回结果。二、代码:Sub示例_1_18()Dim bssString, yczChar, wzbssString =ABpAApCDPB
38、BPyczChar = PMsgBox bssString = ABpAApCDPBBP & Chr(10) & _yczChar= P时: & Chr(10) & Chr(10) & _InStr(4, bssString, yczChar, 1)返回值为 & _InStr(4, bssString, yczChar, 1)wz = Instr(1, bssString, yczChar, 0)wz = Instr(bssString,yczChar)返回9。wz = Instr(1, bssString, W)返回0。End Sub三、代码详解1、Sub示例_1_18():宏程序的开始语句
39、。宏名为示例_1_18。2、Dim bssString, yczChar, wz:变量bssString、yczChar和ws声明为可变型变量。3、bssString =ABpAApCDXPBBP:把被搜索的字符串赋给变量bssString。4、yczChar = P:把要查找的字符P赋给变量yczChar。5、MsgBox bssString = ABpAApCDPBBP & Chr(10) & _yczChar= P时: & Chr(10) & Chr(10) & _InStr(4, bssString, yczChar, 1)返回值为 & _InStr(4, bssString, yczChar, 1):用消息框显示从第四个字符开始,以文本比较的方式找字符P,返回值为6(小写p的位置)。小写p和大写P在文本比较下是一样的,也就是当函数的最后一个参数为1时,查找不分大小写。把要查找的字符P的位置赋给变量yczChar。式中Chr(10)是换行符。6、wz = Instr(1, bssString, yczChar, 0):从第一个字符开始,以二进制比较的方式查找,返回值为9(大写P的位置