admin 管理员组文章数量: 887031
2024年1月23日发(作者:站长工具seo综合查询全面解析)
前言
我们平时在工作表单元格的公式中常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBA中不能直接应用,必须在函数名前面加上对象,比如:(arg1,arg2,arg3)。
而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。
第1.1例 ASC函数
一、题目:
要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII值。
二、代码:
Sub 示例_1_01()
Dim myNum1%, myNum2%
myNum1 = Asc("Excel") '返回69
myNum2 = Asc("e") '返回101
[a1] = "myNum1= ": [b1] = myNum1
[a2] = "myNum2= ": [b2] = myNum2
End Sub
三、代码详解
1、Sub 示例_1_01():宏程序的开始语句。
2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。
也可以写为 Dim myNum1 As Integer 。Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。Integer 的类型声明字符是百分比符号 (%)。
1
3、myNum1 = Asc("Excel"):把Asc函数的值赋给变量myNum1。
Asc函数返回一个 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单元格。
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] = myChar1
[a2] = "myChar2= ": [b2] = myChar2
2
End Sub
三、代码详解
1、Sub 示例_1_02():宏程序的开始语句。
2、Dim myChar1$, myChar2$:变量myChar1和myChar2声明为字符串变量。
也可以写为 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(字符代码) 参数是用来识别某字符的。
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函数根据指定数字选择对应的字符串。
3
二、代码:
Sub 示例_1_03()
Dim Num%
Num=2
MsgBox Choose(Num, "一月", "二月", "三月")
End Sub
三、代码详解
1、Sub 示例_1_03():宏程序的开始语句。宏名为示例_1_03。
2、Dim Num% :变量Num声明为整型变量。
3、Num=2 :把2赋给变量Num。
4、MsgBox Choose(Num, "一月", "二月", "三月") :
Choose函数从参数列表中选择并返回一个值。
语法
Choose(index, choice-1[, choice-2, ... [, choice-n]])
Choose 会根据 index 的值来返回选择项列表中的某个值。如果 index 是 1,则 Choose会返回列表中的第 1 个选择项。如果 index 是 2,则会返回列表中的第 2 个选择项,以此类推。
Index是必要参数,数值表达式或字段,它的运算结果是一个数值,且界于 1 和可选择的项目数之间。当 index小于 1 或大于列出的选择项数目时,Choose 函数返回 Null。如果 index 不是整数,则会先四舍五入为与其最接近的整数。
第1.4例 Cos函数
一、题目:
要求编写一段代码,运用Cos函数根据指定角度的余弦计算其正割的值。
二、代码:
4
Sub 示例_1_04()
Dim jiaodu, zenge
jiaodu = 1.3
zenge = 1 / Cos(jiaodu)
MsgBox “角度为 ” & jiaodu & “的正割的值= ” & zenge
End Sub
三、代码详解
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、MsgBox “角度为 ” & jiaodu & “的正割的值= ” & zenge :利用MsgBox函数显示算得的正割(sec())的值。
第1.5例 Date函数
一、题目:
要求编写一段代码,运用Date函数显示系统日期的值。
二、代码:
Sub 示例_1_05()
Dim myDate
myDate = Date
5
MsgBox “系统日期为 ” & myDate
End Sub
三、代码详解
1、Sub 示例_1_05():宏程序的开始语句。宏名为示例_1_05。
2、Dim myDate :变量myDate被指定为可变型数据类型。
3、myDate = Date :把系统日期的值赋给变量myDate。
Date函数返回系统当前的日期。
4、MsgBox “系统日期为 ” & myDate :利用MsgBox函数显示系统日期的值。
第1.6例 DateAdd函数
一、题目:
要求编写一段代码,运用DateAdd函数显示返回一定间隔后的日期。
二、代码:
Sub 示例_1_06()
Dim dyrq As Date
Dim jglx As String
Dim n As Integer
Dim Msg
jglx = "m"
dyrq = InputBox("请输入一个日期")
n = InputBox("输入增加月的数目:")
Msg = "新日期: " & DateAdd(jglx, n, dyrq)
MsgBox Msg
End Sub
三、代码详解
6
1、Sub 示例_1_06():宏程序的开始语句。宏名为示例_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函数计算得到的新的日期和字符串“新日期: ”连接起来赋给变量Msg。
DateAdd函数返回一个日期,这一日期加上了一个时间间隔。
语法
DateAdd(interval, number, date)
DateAdd 函数语法中有下列命名参数:
interval 必要。字符串表达式,是所要加上去的时间间隔。它具有好多设定值,比如”m”为月;”d”为日;”yyyy”为年等等。
number 必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。
date 必要。表示日期的文字。
7、MsgBox Msg :利用MsgBox函数显示Msg的值。
第1.7例 DateDiff函数
一、题目:
要求编写一段代码,运用DateDiff函数返回某个指定日期距离今天的天数。
二、代码:
7
Sub 示例_1_07()
Dim zdrq As Date
Dim Msg
zdrq = InputBox("请输入一个日期:")
Msg = "离开今天的天数: " & DateDiff("d", Now, zdrq)
MsgBox Msg
End Sub
三、代码详解
1、Sub 示例_1_07():宏程序的开始语句。宏名为示例_1_07。
2、Dim zdrq As Date :变量zdrq声明为日期对象型数据类型。
3、zdrq = InputBox("请输入一个日期") :用InputBox函数来让用户输入一个日期,并把用户输入的日期赋给变量zdrq。
4、Msg = "离开今天的天数: " & DateDiff("d", Now, zdrq) :用DateDiff函数计算得到的结果和字符串“离开今天的天数: ”连接起来赋给变量Msg。
5、MsgBox Msg :利用MsgBox函数显示Msg的值。
DateDiff 函数
可用来决定两个日期之间所指定的时间间隔数目。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
DateDiff 函数语法中有下列命名参数:
interval 必要。字符串表达式,是所要加上去的时间间隔。它具有好多设定值,与DateAdd函数相同;此例中的"d",表示天数;
Date1,date2 必要;计算中要用到的两个日期。
8
Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。
firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。
第1.8例 DatePart函数
一、题目:
要求编写一段代码,运用DatePart函数返回某个指定日期是在一年的哪一个季度。
二、代码:
Sub 示例_1_08()
Dim zdrq As Date
Dim Msg
zdrq = InputBox("请输入一个日期:")
Msg = "季度: " & DatePart("q", zdrq)
MsgBox Msg
End 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、MsgBox Msg :利用MsgBox函数显示Msg的值。
9
DatePart 函数
DatePart(interval, date, [, firstdayofweek[, firstweekofyear]])
语法中有下列命名参数:
interval 必要。字符串表达式,是所要加上去的时间间隔。它具有好多设定值,与DateAdd函数相同;此例中的"q",表示季度;
Date, 必要;计算中要用到的两个日期。
Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。
firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。
第1.9例 DateSerial函数
一、题目:
要求编写一段代码,运用DateSerial函数返回指定日期的Date类型。
二、代码:
Sub 示例_1_09()
Dim zdrq
zdrq = DateSerial(2008, 8, 8)
MsgBox zdrq
End Sub
三、代码详解
1、Sub 示例_1_09():宏程序的开始语句。宏名为示例_1_09。
2、Dim zdrq :变量zdrq声明为可变型数据类型。
10
3、zdrq = DateSerial(2008, 8, 8) :DateSerial函数转换所得的结果赋给变量zdrq。
DateSerial函数返回指定日期年月日的日期格式。
语法
DateSerial(year, month, day)
DateSerial 函数语法有下列的命名参数:
year 必要;整型。从 100 到 9999 间的整数,或一数值表达式。
month 必要;整型。任何数值表达式。
day 必要;整型。任何数值表达式。
4、MsgBox zdrq :利用MsgBox函数显示zdrq的值。
第1.10例 DateValue 函数
一、题目:
要求编写一段代码,运用DateValue函数返回指定日期的Date类型。
二、代码:
Sub 示例_1_010()
Dim zdrq
zdrq = DateValue("August 8, 2008")
MsgBox zdrq
End Sub
三、代码详解
1、Sub 示例_1_010():宏程序的开始语句。宏名为示例_1_010。
2、Dim zdrq :变量zdrq声明为可变型数据类型。
3、zdrq = DateValue("August 8, 2008") :DateSerial函数转换所得的结果赋给变量zdrq。
11
4、MsgBox zdrq :利用MsgBox函数显示zdrq的值。
DateValue函数
将字符串转换为日期格式。
语法
DateValue (date)
DateValue 函数的参数:
date 必要;通常是字符串表达式,表示从 100 年 1 月 1 日到 9999 年 12 月 31 日之间的一个日期。但是,date 也可以是任何表达式,其所代表的日期、时间在上述范围内。
第1.11例 Day函数
一、题目:
要求编写一段代码,运用Day函数返回指定日期的日。
二、代码:
Sub 示例_1_11()
Dim zdrq
zdrq = #2008-12-8#
MsgBox zdrq & " 这天的日为: " & Day(zdrq)
End Sub
三、代码详解
1、Sub 示例_1_11():宏程序的开始语句。宏名为示例_1_11。
2、Dim zdrq :变量zdrq声明为可变型数据类型。
3、zdrq = #2008- 8- 8# :把日期2008-8-8赋给变量zdrq。
4、MsgBox zdrq & " 这天的日为: " & Day(zdrq):利用MsgBox函数显示Day(zdrq)的值。
12
Day函数返回一个其值为 1 到 31 之间的整数,表示一个月中的某一日。
语法
Day (date)
Day 函数的参数:
date必要的,可以是任何能够表示日期的 Variant、数值表达式、字符串表达式或它们的组合。
第1.12例 Dir函数
一、题目:
要求编写一段代码,运用Dir函数返回一个文件夹的文件列表。
二、代码:
Sub 示例_1_12()
Dim wjm
wjm = Dir("C:")
MsgBox wjm
wjm = Dir("C:WINDOWS*.ini")
wjm = Dir
End Sub
三、代码详解
1、Sub 示例_1_12():宏程序的开始语句。宏名为示例_1_12。
2、Dim wjm :变量wjm声明为可变型数据类型。
3、wjm = Dir("C:") :
13
如果该文件存在则返回“”(在C:Windows 文件夹中) ,把返回的文件名赋给变量wjm 。如果该文件不存在则wjm=””。
4、wjm = Dir("C:WINDOWS*.ini") :
返回带指定扩展名的文件名。如果超过一个 *.ini 文件存在,函数将返回按条件第一个找到的文件名。
5、wjm = Dir :
若第二次调用 Dir 函数,但不带任何参数,则函数将返回同一目录下的下一个 *.ini 文件。
Dir函数
返回一个字符串 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。
Dir[(pathname[, attributes])]
Dir 函数的语法具有以下几个部分:
pathname 可选参数。用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到 pathname,则会返回零长度字符串 ("")。
attributes 可选参数。常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配 pathname 但不包含属性的文件。
第1.13例 Fix函数
一、题目:
要求编写一段代码,运用Fix函数返回某数值的整数部分。
二、代码:
Sub 示例_1_13()
14
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) :
利用MsgBox函数显示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, rq
sj = “19:08:43”
15
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-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[, firstweekofyear]]])
Format 函数的语法具有下面几个部分:
expression 必要参数。任何有效的表达式。
format 可选参数。有效的命名表达式或用户自定义格式表达式。
16
firstdayofweek 可选参数。常数,表示一星期的第一天。
firstweekofyear 可选参数。常数,表示一年的第一周。
第1.15例 Hour函数
一、题目:
要求编写一段代码,运用Hour函数对指定字符串返回小时数。
二、代码:
Sub 示例_1_15()
Dim sj
sj = "3:45:20 PM" ' 指定一时间字符串。
MsgBox sj & " 的小时是: " & Hour(sj)
End Sub
三、代码详解
1、Sub 示例_1_15():宏程序的开始语句。宏名为示例_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)
17
Time 必要的参数,可以是任何能够表示时刻的数值表达式、字符串表达式或它们的组合。
第1.16例 IIF函数
一、题目:
要求编写一段代码,运用IIF函数根据判断条件返回结果。
二、代码:
Sub 示例_1_16()
Dim Cheshi As String, dx As Integer
dx = 560
Cheshi = 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的条件来判断,并且把返回的结果赋给变量Cheshi。
5、MsgBox dx & " 比1000要" & Cheshi & " " & Abs(1000 - dx) :
利用MsgBox函数显示最后的值。其中Abs函数是取表达式的绝对值函数。
IIF 函数
根据表达式的值,来返回两部分中的其中一个。
18
IIF(expr, truepart, falsepart)
IIF 函数的语法含有下面这些命名参数:
expr 必要参数。用来判断真伪的表达式。
truepart 必要参数。如果 expr 为 True,则返回这部分的值或表达式。
falsepart 必要参数。如果 expr 为 False,则返回这部分的值或表达式。
第1.17例 InputBox函数
一、题目:
要求编写一段代码,运用InputBox函数,用户输入一定范围的数值并返回结果。二、代码:
Sub Sub 示例_1_17()
Dim Msg$, bt$, Default$, MyValue,aa
Msg = "输入一个10到25之间的数值:"
bt = "InputBox 函数示例"
Default = "10" ' 设置缺省值。
100:
MyValue = InputBox(Msg,bt, Default)
If MyValue < 10 Or MyValue > 25 Then
aa = MsgBox("输入数值超出范围,请重新输入或者退出。", 1)
If aa <> vbOK Then Exit Sub
GoTo 100
Else
MsgBox "你输入的是 " & MyValue
End If
19
End 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函数显示信息、标题及缺省值,把函数返回值赋给变量MyValue。
7、If MyValue < 10 Or 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开始执行代码。
11、MsgBox "你输入的是 " & MyValue :如果用户输入了符合要求的数值,按了回车键或者“确定”按钮,消息框显示用户输入的值。
InputBox 函数
在一对话框来中显示提示,等待用户输入正文或按下按钮,并返回包含文本框内容的字符串。
语法
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
20
InputBox 函数的语法具有以下几个命名参数:
Prompt 必需的。作为对话框消息出现的字符串表达式。Prompt 的最大长度大约是 1024个字符,由所用字符的宽度决定。如果 Prompt 包含多个行,则可在各行之间用回车符 (Chr(13))、换行符 (Chr(10)) 或回车换行符的组合 (Chr(13) & Chr(10)) 来分隔。
Title 可选的。显示对话框标题栏中的字符串表达式。如果省略 Title,则把应用程序名放入标题栏中。
Default 可选的。显示文本框中的字符串表达式,在没有其它输入时作为缺省值。如果省略Default,则文本框为空。
其它参数省略,请参见Excel帮助文件。
第1.18例 Instr函数
一、题目:
要求编写一段代码,运用Instr函数,在一字符串中查找另一字符串并返回结果。
二、代码:
Sub 示例_1_18()
Dim bssString, yczChar, wz
bssString ="ABpAApCDPBBP"
yczChar = "P"
MsgBox "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)
21
wz = Instr(bssString,yczChar) ' 返回 9。
wz = Instr(1, bssString, "W") ' 返回 0。
End Sub
三、代码详解
1、Sub 示例_1_18():宏程序的开始语句。宏名为示例_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的位置)。小写 p 和大写 P 在二进制比较下是不一样的,也就是当函数的最后一个参数为0时,查找分大小写。把查找到的字符P的位置赋给变量wz。
7、wz = Instr(bssString, yczChar) :上一句也可写成这样的,因为缺省的比对方式为二进制比较(最后一个参数可省略)。第一个参数省略默认从第一个字符开始查找。返回值为 9。
8、wz = Instr(1,bssString, ”W”) :在被搜索的字符串中查找字符W,由于没找到返回值为0。
InStr 函数
22
返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。
语法
InStr([start, ]string1, string2[, compare])
InStr 函数的语法具有下面的参数:
start 可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果指定了 compare 参数,则一定要有 start 参数。
string1 必要参数。接受搜索的字符串表达式。
string2 必要参数。被搜索的字符串表达式。
Compare可选参数。指定字符串比较。如果省略 compare,Option Compare 的设置将决定比较的类型。
compare 参数设置为:
常数 值 描述
vbUseCompareOption -1 使用Option Compare 语句设置执行一个比较。
vbBinaryCompare 0 执行一个二进制比较。
vbTextCompare 1 执行一个按照原文的比较。
vbDatabaseCompare 2 仅适用于Microsoft Access,执行一个基于数据库中信息的比较。
第1.19例 InstrRev函数
一、题目:
要求编写一段代码,运用InstrRev函数,返回一个字符串在另一个字符串中出现的位置,从字符串的末尾算起。
二、代码:
Sub 示例_1_19()
Dim bssString, yczChar, wz
bssString ="ABpAApCDPBBP"
23
yczChar = "p"
ws = InstrRev(bssString, yczChar, 4,1)
MsgBox ws
End Sub
三、代码详解
1、Sub 示例_1_19():宏程序的开始语句。宏名为示例_1_19。
2、Dim bssString, yczChar, wz :变量bssString、yczChar和ws声明为可变型变量。
3、bssString ="ABpAApCDXPBBP" : 把被搜索的字符串赋给变量bssString。
4、yczChar = "p" : 把要查找的字符P赋给变量yczChar。
5、wz = InstrRev( bssString, yczChar,4,1) :从第4个字符开始,按原文比较的方式从末尾往前查找字符p,返回值为3。
InStrRev函数
返回一个字符串在另一个字符串中出现的位置,从字符串的末尾算起。
语法
InstrRev(stringcheck, stringmatch[, start[, compare]])
InstrRev函数语法有如下命名参数:
stringcheck 必需的。要执行搜索的字符串表达式。
stringmatch 必需的。要搜索的字符串表达式。
start 可选的。数值表达式,设置每次搜索的开始位置。如果忽略,则表示从字符串末尾位置开始搜索。
compare 可选的。数字值,指出在判断子字符串时所使用的比较方法。如果忽略,则执行二进制比较。
compare参数值如下:
常数 值 描述
vbUseCompareOption –1 用Option Compare语句的设置值来执行比较。
vbBinaryCompare 0 执行二进制比较。区分大小写。
24
vbTextCompare 1 执行文字比较。不区分大小写。
vbDatabaseCompare 2 只用于Microsoft Access。基于您的数据库信息执行比较。
6、MsgBox ws : 用消息框显示查找返回的值 3。
第1.20例 IsArray函数
一、题目:
要求编写一段代码,运用IsArray函数,返回一个变量是否为一个数组。
二、代码:
Sub 示例_1_20()
Dim Arr1(1 To 8,1 to 3) As Integer, Arr2
Arr2 = Array(1, 2, 3,4,5)
MsgBox “Arr1 是否为数组: ” & IsArray(Arr1) ' 返回 True。
MsgBox “Arr2 是否为数组: ” & IsArray(Arr2) ' 返回 True。
End Sub
三、代码详解
1、Sub 示例_1_20():宏程序的开始语句。宏名为示例_1_20。
2、Dim Arr1(1 To 8,1 to 3) As Integer, Arr2 :声明变量Arr1为整型数组、Arr2为可变型变量。
3、Arr2 = Array(1, 2, 3,4,5) :用Array函数赋值给Arr2。
Array 函数
返回一个包含数组的 Variant。
语法
Array(arglist)
所需的 arglist 参数是一个用逗号隔开的值表,这些值用于给 Variant 所包含的数组的各元素赋值。如果不提供参数,则创建一个长度为 0 的数组。
25
使用 Array 函数创建的数组的下界受 Option Base 语句指定的下界的决定,默认为0。
IsArray 函数
返回 Boolean 值,指出变量是否为一个数组。
语法
IsArray(varname)
必要的 varname 参数是一个指定变量的标识符。
如果变量是数组,则 IsArray 返回 True;否则返回 False。对于包含数组的 variant 表达式来说,IsArray 尤为有用。
4、MsgBox “Arr1 是否为数组: ” & IsArray(Arr1) :用消息框显示Arr1是否为数组。
第1.21例 IsNumeric函数
一、题目:
要求编写一段代码,运用IsNumeric函数,返回一个变量是否为一个数值。
二、代码:
Sub 示例_1_21()
Dim bl,bl1
bl = 530.25
MsgBox "变量 bl 是否为数值: " & IsNumeric(bl)
bl1 = "4500 Cm"
MsgBox "变量bl1 是否为数值: " & IsNumeric(bl1)
End Sub
三、代码详解
1、Sub 示例_1_21():宏程序的开始语句。宏名为示例_1_21。
2、Dim bl , bl1 :声明变量bl,bl1为可变型变量。
3、bl = 530.25 :把数值530.25赋给变量bl。
26
4、MsgBox "变量 bl 是否为数值: " & IsNumeric(bl) :用消息框显示IsNumeric函数判断的变量bl是否为数值,返回True。
5、bl1 = "4500 Cm" :把字符串“4500 Cm”赋给变量bl1。
4、MsgBox "变量 bl1 是否为数值: " & IsNumeric(bl1) :用消息框显示IsNumeric函数判断的变量bl1是否为数值,返回False。
IsNumeric 函数
返回 Boolean 值,返回变量是否为一个数值。
IsNumeric(expression)
必要的 expression 参数是一个 Variant,包含数值表达式或字符串表达式。
第1.22例 Join函数
一、题目:
要求编写一段代码,运用Join函数,通过连接某个数组中的多个子字符串而创建的一个字符串。
二、代码:
Sub 示例_1_022()
Dim ss
ss=Array("一月", "二月", "三月")
[A1]=Join(ss,”,”)
End Sub
三、代码详解
1、Sub 示例_1_022():宏程序的开始语句。宏名为示例_1_022。
2、Dim ss :声明变量ss为可变型变量。
27
3、ss=Array("一月", "二月", "三月") :把Array函数得到的一维数组赋给变量ss。
4、[A1]=Join(ss,”,”) :把数组ss的各个元素用逗号连接起来赋给A1单元格。返回”一月,二月,三月”;
如果省略分隔符 [A1]=Join(ss) 则用空格来分隔,返回”一月 二月 三月”;
如果分隔符是零长度字符串("") [A1]=Join(ss,””) 则没有分隔符了,返回”一月二月三月”。
Join函数
返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的。
Join(sourcearray[, delimiter])
Join函数语法有如下命名参数:
sourcearray 必需的。包含被连接子字符串的一维数组。
delimiter 可选的。在返回字符串中用于分隔子字符串的字符。如果忽略该项,则使用空格(" ")来分隔子字符串。如果delimiter是零长度字符串(""),则列表中的所有项目都连接在一起,中间没有分隔符。
第1.23例 LBound和 UBound函数
一、题目:
要求编写一段代码,运用LBound函数,返回数组的指定维数的最小可用下界;运用UBound函数,返回数组的指定维数的最大可用上界。
二、代码:
Sub 示例_1_023()
Dim Arr(1 To 10, 5 To 15, 10 To 20)
Dim Arr1(10)
28
[a1] = "数组变量:Arr(1 To 10, 5 To 15, 10 To 20) "
[a2] = "数组变量:Arr1(10) "
[a3] = "LBound(Arr, 1) 返回 ": [b3] = LBound(Arr, 1)
[c3] = "UBound(Arr, 1) 返回 ": [d3] = UBound(Arr, 1)
[a4] = "LBound(Arr, 3) 返回 ": [b4] = LBound(Arr, 3)
[c4] = "UBound(Arr, 3) 返回 ": [d4] = UBound(Arr, 3)
[a5] = "LBound(Arr1) 返回 ": [b5] = LBound(Arr1)
[c5] = "UBound(Arr1) 返回 ": [d5] = UBound(Arr1)
End Sub
三、代码详解
1、Sub 示例_1_023():宏程序的开始语句。宏名为示例_1_023。
2、Dim Arr(1 To 10, 5 To 15, 10 To 20) :声明Arr为3维数组变量。
3、Dim Arr1(10) :声明Arr1为1维数组变量。
4、[a1] = "数组变量:Arr(1 To 10, 5 To 15, 10 To 20) " :把字符串赋给单元格A1。
5、[a2] = "数组变量:Arr1(10) " :把字符串赋给单元格A2。
6、[b3] = LBound(Arr,1) :运用LBound函数,返回数组Arr的第1维的最小可用下
界,返回1,赋给单元格B3。
7、[d3] = UBound(Arr,1) :运用UBound函数,返回数组Arr的第1维的最大可用上
界,返回10,赋给单元格D3。
8、[b4] = LBound(Arr,3) :运用LBound函数,返回数组Arr的第3维的最小可用下
界,返回10,赋给单元格B4。
9、[d4] = UBound(Arr,3) :运用UBound函数,返回数组Arr的第3维的最大可用上
界,返回20,赋给单元格D4。
29
10、[b5] = LBound(Arr1) :运用LBound函数,返回数组Arr1的最小可用下界,返回0或者1,要取决于Option Base的设置,默认为0。
11、[d5] = UBound(Arr1) :运用UBound函数,返回数组Ar1r的最大可用上界,返回10,赋给单元格D5。
LBound 函数
返回一个 Long 型数据,其值为数组指定维可用的最小下界。
LBound(arrayname[, dimension])
LBound 函数的参数:
arrayname 必需的。数组变量的名称,遵循标准的变量命名约定。
dimension 可选的;Variant (Long)。指定返回哪一维的下界。1 表示第一维,2 表示第二维,如此类推。如果省略 dimension,就认为是 1。
UBound 函数
返回一个 Long 型数据,其值为指定的数组维可用的最大上界。
UBound(arrayname[, dimension])
UBound 函数的语法包含下面部分:
arrayname 必需的。数组变量的名称,遵循标准变量命名约定。
dimension 可选的;Variant (Long)。指定返回哪一维的上界。1 表示第一维,2 表示第二维,如此等等。如果省略 dimension,就认为是 1。
说明
UBound 函数与 LBound 函数一起使用,用来确定一个数组的大小。LBound 用来确定数组某一维的上界。
30
第1.24例 LCase和UCase 函数
一、题目:
要求编写一段代码,运用LCase 函数来将某字符串转成全部小写,并运用UCase 函数再将它转成全部大写。
二、代码:
Sub 示例_1_024()
Dim Dxzfc$, XXzfc$
DXzfc = "HELLO SHANGHAI EXPO 2010" ' 大写的字符串。
XXzfc = Lcase(DXzfc) ' 返回 "hello shanghai expo 2010"。
DXzfc = Ucase(XXzfc) ' 返回 "HELLO SHANGHAI EXPO 2010"。
End Sub
三、代码详解
1、Sub 示例_1_024():宏程序的开始语句。宏名为示例_1_024。
2、Dim Dxzfc$, XXzfc$ :声明 Dxzfc, XXzfc为字符串变量。
$是String字符串数据类型的类型声明字符,其它有类型声明字符的数据类型还有:
整型 Integer %
长整型 Long &
单精度浮点型 Single !
双精度浮点型 Double #
变比整型 Currency @
3、DXzfc = "HELLO SHANGHAI EXPO 2010" :把大写的字符串赋给字符串变量DXzfc。
31
4、XXzfc = Lcase(DXzfc) :运用LCase 函数把大写字符串全部转成小写赋给字符串变量XXzfc。
5、DXzfc = Ucase(XXzfc) :运用UCase 函数把小写字符串全部转成大写赋给字符串变量DXzfc。
LCase 函数
返回转成小写的 String。
LCase(string)
必要的 string 参数可以是任何有效的字符串表达式。如果 string 包含 Null,将返回 Null。
说明
只有大写的字母会转成小写;所有小写字母和非字母字符保持不变。
UCase 函数
返回 Variant (String),其中包含转成大写的字符串。
UCase(string)
必要的 string 参数为任何有效的字符串表达式。如果 string 包含 Null,将返回 Null。
说明
只有小写的字母会转成大写;原本大写或非字母之字符保持不变。
第1.25例 Left 和 Right 函数
一、题目:
要求编写一段代码,运用Left 函数来得到某字符串最左边的几个字符,运用Right 函数来得到某字符串最右边的几个字符。
二、代码:
32
Sub 示例_1_025()
Dim RYzfc$, Myzfc$
RYzfc = "HELLO SHANGHAI EXPO 2010"
Myzfc = Left(RYzfc, 5)
Myzfc = Left(RYzfc, 14)
Myzfc = Right(RYzfc, 4) '
End Sub
三、代码详解
1、Sub 示例_1_025():宏程序的开始语句。宏名为示例_1_025。
2、Dim RYzfc$, Myzfc$ :声明 RYzfc, Myzfc为字符串变量。
3、RYzfc = "HELLO SHANGHAI EXPO 2010" :把字符串赋给字符串变量RYzfc。
4、Myzfc = Left(RYzfc, 5) :运用Left 函数从RYzfc取最左边的5个字符并赋给Myzfc变量,返回 "HELLO"。
5、Myzfc = Left(RYzfc, 14) :从RYzfc取最左边的14个字符并赋给Myzfc变量,返回 "HELLO SHANGHAI"。
6、Myzfc = Right(RYzfc, 4) :从RYzfc取最右边的4个字符并赋给Myzfc变量,返回 "2010"。
Left 函数
返回 Variant (String),其中包含从字符串左边算起指定数量的字符。
Left(string, length)
Left 函数的语法有下面的命名参数:
33
string 必要参数。字符串表达式其中最左边的那些字符将被返回。如果 string 包含 Null,将返回 Null。
length 必要参数;为 Variant (Long)。数值表达式,指出将返回多少个字符。如果为0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。
Right 函数
返回 Variant (String),其中包含从字符串右边取出的指定数量的字符。
Right(string, length)
Right 函数的语法具有下面的命名参数:
string 必要参数。字符串表达式,从中最右边的字符将被返回。如果 string 包含 Null,将返回 Null。
length 必要参数;为 Variant (Long)。为数值表达式,指出想返回多少字符。如果为0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。
第1.26例 Len 函数
一、题目:
要求编写一段代码,运用Len 函数来得到指定字符串的长度。
二、代码:
Sub 示例_1_026()
Dim Ryzfc$, Mycdu
RYzfc = "HELLO SHANGHAI EXPO 2010"
34
Mycdu = Len(RYzfc)
End Sub
三、代码详解
1、Sub 示例_1_026():宏程序的开始语句。宏名为示例_1_026。
2、Dim RYzfc$, Mycdu :声明 RYzfc为字符串变量,Mycdu为可变型变量。
3、RYzfc = "HELLO SHANGHAI EXPO 2010" :把字符串赋给字符串变量RYzfc。
4、Mycdu = Len(RYzfc) :运用Len 函数来得到字符串RYzfc的长度,返回 24。
Len 函数
返回 Long,其中包含字符串内字符的数目,或是存储一变量所需的字节数。
Len(string | varname)
Len 函数的语法有下面这些参数:
string 任何有效的字符串表达式。如果 string 包含 Null,会返回 Null。
Varname 任何有效的变量名称。如果 varname 包含 Null,会返回 Null。如果 varname 是Variant,Len 会视其为 String 并且总是返回其包含的字符数。
第1.27例 LTrim、RTrim与 Trim 函数
一、题目:
要求编写一段代码,分别运用这三个函数来返回没有前导空白 (LTrim)、尾随空白 (RTrim) 或前导和尾随空白 (Trim)的指定字符串。
二、代码:
Sub 示例_1_027()
35
Dim ZDzfc$, CJzfc$
ZDzfc = " <-裁剪字符串-> " ' 设置字符串初值。
CJzfc = LTrim(ZDzfc) '返回 "<-裁剪字符串-> "。
CJzfc = RTrim(ZDzfc) '返回 " <-裁剪字符串->"。
CJzfc = Trim(ZDzfc) '返回 "<-裁剪字符串->"。
End Sub
三、代码详解
1、Sub 示例_1_027():宏程序的开始语句。宏名为示例_1_027。
2、Dim ZDzfc$, CJzfc$ :声明 RYzfc、CJzfc为字符串变量。
3、ZDzfc = " <-裁剪字符串-> " :把指定的字符串赋给字符串变量ZDzfc。
4、CJzfc = LTrim(ZDzfc) : 运用LTrim 函数裁去左边的空白,把结果赋给变量CJzfc,返回 "<-裁剪字符串-> "。
5、CJzfc = RTrim(ZDzfc) : 运用RTrim 函数裁去右边的空白,把结果赋给变量CJzfc,返回" <-裁剪字符串->"。
6、CJzfc = Trim(ZDzfc) : 运用Trim 函数裁去左右两边的空白,把结果赋给变量CJzfc,返回 "<-裁剪字符串->"。
LTrim、RTrim与 Trim 函数
返回 Variant (String),其中包含指定字符串的拷贝,没有前导空白 (LTrim)、尾随空白 (RTrim) 或前导和尾随空白 (Trim)。
LTrim(string)
RTrim(string)
Trim(string)
36
必要的 string 参数可以是任何有效的字符串表达式。如果 string 包含 Null,将返回 Null。
第1.28例 Mid 函数
一、题目:
要求编写一段代码,用Mid 函数来返回某个字符串中的几个字符。
二、代码:
Sub 示例_1_028()
Dim Myzfc$, qmzfc$, mwzfc$, zjzfc$
Myzfc = "HELLO SHANGHAI EXPO 2010"
qmzfc = Mid(Myzfc, 1, 5) ' 返回 "HELLO"。
mwzfc = Mid(Myzfc, 21, 4) ' 返回 "2010"。
zjzfc = Mid(Myzfc, 7) ' 返回 "SHANGHAI EXPO 2010"。
End Sub
三、代码详解
1、Sub 示例_1_028():宏程序的开始语句。宏名为示例_1_028。
2、Dim Myzfc$, qmzfc$, mwzfc$, zjzfc$ :声明变量均为字符串变量。
3、Myzfc = "HELLO SHANGHAI EXPO 2010" :把指定的字符串赋给字符串变量Myzfc。
4、qmzfc = Mid(Myzfc, 1, 5) : 运用Mid 函数从左边第一个字符开始取5个字符,把结果赋给变量qmzfc,返回 "HELLO"。如果函数第2个参数超过第一个参数的字符数,Mid 将返回零长度字符串 ("")。
5、mwzfc = Mid(Myzfc, 21, 4) : 运用Mid 函数从左边第21个字符开始取4个字符,把结果赋给变量mwzfc,返回 "2010"。
37
6、zjzfc = Mid(Myzfc, 7) : 运用Mid 函数从左边第7个字符开始取直到最后的所有的字符,把结果赋给变量zjzfc,返回 "SHANGHAI EXPO 2010"。这里函数第3个参数省略了,表示从第2个参数开始直到最后所有的字符。
Mid 函数
返回 Variant (String),其中包含字符串中指定数量的字符。
Mid(string, start[, length])
Mid 函数的语法具有下面的命名参数:
string 必要参数。字符串表达式,从中返回字符。如果 string 包含 Null,将返回 Null。
start 必要参数。为 Long。string 中被取出部分的字符位置。如果 start 超过 string 的字符数,Mid 返回零长度字符串 ("")。
length 可选参数;为 Variant (Long)。要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到尾端的所有字符。
第1.29例 Month 和 MonthName函数
一、题目:
要求编写一段代码,用Month 函数来返回某个日期的月份数,用MonthName函数返回这个月份的字符串。
二、代码:
Sub 示例_1_029()
Dim rq, Yuef
rq = #2008-8-12#
38
Yuef = Month(rq)
MsgBox MonthName(yuef)
End Sub
三、代码详解
1、Sub 示例_1_029():宏程序的开始语句。宏名为示例_1_029。
2、Dim rq, Yuef :声明变量均为可变型变量。
3、rq = #2008-8-12# :把指定的日期赋给变量rq。
4、Yuef = Month(rq) : 运用Month 函数得到指定日期的月份,把结果赋给变量Yuef,返回月份的值为 8。
5、MsgBox MonthName(yuef) :用消息框返回MonthName函数得到的这个月份的字符串“八月”。
Month 函数
返回一个 Variant (Integer),其值为 1 到 12 之间的整数,表示一年中的某月。
Month(date)
必要的 date 参数,可以是任何能够表示日期的 Variant、数值表达式、字符串表达式或它们的组合。如果 date 包含 Null,则返回 Null。
MonthName函数
返回一个表示指定月份的字符串。
MonthName(month[, abbreviate])
MonthName函数语法有如下几部分:
39
month 必需的。月份的数值表示。例如一月是1,二月是2,等等。
abbreviate 可选的。Boolean值,表示月份名是否缩写。如果忽略,缺省值为False,表明月份名不能被缩写。
第1.30例 MsgBox 函数
一、题目:
要求编写一段代码,用MsgBox 函数来显示一个具有“是”及“否”按钮的对话框,并根据用户对于消息框的不同选择进行相关的操作。
二、代码:
Sub 示例_1_030()
Dim Msg, An, Bt, Yhhy
Msg = "你要继续吗 ?"
An = vbYesNo + vbCritical + vbDefaultButton1
Bt = "MsgBox 示例" ' 定义标题。
Yhhy = MsgBox(Msg, An, Bt)
If Yhhy = vbYes Then ' 用户按下“是”。
MsgBox "你按下的是“是”按钮。" ' 完成某操作。
Else ' 用户按下“否”。
MsgBox "你按下的是“否”按钮。" ' 完成某操作。
End If
End Sub
三、代码详解
1、Sub 示例_1_030():宏程序的开始语句。宏名为示例_1_030。
2、Dim Msg, An, Bt, Yhhy :声明变量均为可变型变量。
40
3、Msg = "你要继续吗 ?" :把指定的信息赋给变量Msg。
4、An = vbYesNo + vbCritical + vbDefaultButton1 :把指定的按钮赋给变量An。这句也可写为An =4+16,第3个参数是默认的,为0,可省略。
5、Bt = "MsgBox 示例" :把消息框的标题赋给变量Bt。
6、Yhhy = MsgBox(Msg, An, Bt) :把MsgBox函数的返回值(即用户按了哪个按钮)赋给变量Yhhy。
7、If Yhhy = vbYes Then : 如果用户按下“是”,那么执行下面的语句;
8、MsgBox "你按下的是“是”按钮。" 用MsgBox函数返回信息,因为不需要函数的返回值,所以可以去掉函数参数的括号。
MsgBox 函数
在对话框中显示消息,等待用户单击按钮,并返回一个 Integer ,说明用户单击了哪一个按钮。
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
MsgBox 函数的语法具有以下几个命名参数:
Prompt 必需的。字符串表达式,作为显示在对话框中的消息。prompt 的最大长度大约为1024 个字符,由所用字符的宽度决定。如果 prompt 的内容超过一行,则可以在每一行之间用回车符 (Chr(13))、换行符 (Chr(10)) 或是回车与换行符的组合 (Chr(13) &
Chr(10)) 将各行分隔开来。
Buttons 可选的。数值表达式是值的总和,指定显示按钮的数目及形式,使用的图标样式,缺省按钮是什么以及消息框的强制回应等。如果省略,则 buttons 的缺省值为 0。
41
Title 可选的。在对话框标题栏中显示的字符串表达式。如果省略 title,则将应用程序名放在标题栏中。
Helpfile可选的。字符串表达式,识别用来向对话框提供上下文相关帮助的帮助文件。如果提供了 helpfile,则也必须提供 context。
Context 可选的。数值表达式,由帮助文件的作者指定给适当的帮助主题的帮助上下文编号。如果提供了 context,则也必须提供 helpfile。
设置值
buttons 参数有下列设置值:
常数 值 描述
vbOKOnly 0 只显示 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 显示 Critical Message 图标。
VbQuestion 32 显示 Warning Query 图标。
VbExclamation 48 显示 Warning Message 图标。
VbInformation 64 显示 Information Message 图标。
vbDefaultButton1 0 第一个按钮是缺省值。
vbDefaultButton2 256 第二个按钮是缺省值。
vbDefaultButton3 512 第三个按钮是缺省值。
vbDefaultButton4 768 第四个按钮是缺省值。
42
vbApplicationModal 0 应用程序强制返回;应用程序一直被挂起直到用户对消息框作出响应才继续工作。
vbSystemModal 4096 系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。
vbMsgBoxHelpButton 16384 将Help按钮添加到消息框
VbMsgBoxSetForeground 65536 指定消息框窗口作为前景窗口
vbMsgBoxRight 524288 文本为右对齐
vbMsgBoxRtlReading 1048576 指定文本应为在希伯来和阿拉伯语系统中的从右到左显示
第一组值 (0–5) 描述了对话框中显示的按钮的类型与数目;
第二组值 (16, 32, 48, 64) 描述了图标的样式;
第三组值 (0, 256, 512) 说明哪一个按钮是缺省值;
第四组值 (0, 4096) 则决定消息框的强制返回性。将这些数字相加以生成 buttons 参数值的时候,只能由每组值取用一个数字。
第五组值 (16384, 65536,524288,1048576)是附加选项。
注意 这些常数都是 Visual Basic for Applications (VBA) 指定的。结果,可以在程序代码中到处使用这些常数名称,而不必使用实际数值。
返回值
常数 值 描述
vbOK 1 确定
vbCancel 2 取消
vbAbort 3 放弃
43
vbRetry 4 重试
vbIgnore 5 忽略
vbYes 6 是
vbNo 7 否
说明
在提供了 helpfile 与 context 的时候,用户可以按 F1(Windows) or HELP
(Macintosh) 来查看与 context 相应的帮助主题。像 Microsoft Excel 这样一些主应用程序也会在对话框中自动添加一个 帮助 按钮。
如果对话框显示 取消 按钮,则按下 ESC 键与单击 取消 按钮的效果相同。如果对话框中有 Help 按钮,则对话框中提供有上下文相关的帮助。但是,直到其它按钮中有一个被单击之前,都不会返回任何值。
注意 如果还要指定第一个命名参数以外的参数,则必须在表达式中使用 MsgBox。为了省略某些位置参数,必须加入相应的逗号分界符。
第1.31例 Now函数
一、题目:
要求编写一段代码,使用 Now 函数返回系统当前的日期与时间。
二、代码:
Sub 示例_1_031()
Dim jt
jt = Now
End Sub
三、代码详解
1、Sub 示例_1_031():宏程序的开始语句。宏名为示例_1_031。
2、Dim jt :声明变量jt为可变型变量。
44
3、jt = Now :把系统当前的日期与时间赋给变量jt。
注意:Now函数里包含时间,如果只需要日期,可用Date函数。Date函数请见第1_05例。
Now 函数
返回一个 Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。
第1.32例 RGB函数
一、题目:
要求编写一段代码,使用 RGB 函数返回A1单元格的底色和字体的 RGB 色彩值。
二、代码:
Sub 示例_1_032()
Dim hs, I, RGBValue
hs = RGB(255, 255, 0)
I = 35
RGBValue = RGB(I, 64 + I, 128 + I)
Cells(5, 1). = RGBValue
Cells(5, 1). = hs
End Sub
三、代码详解
1、Sub 示例_1_032():宏程序的开始语句。宏名为示例_1_032。
2、Dim hs, I, RGBValue :声明变量均为可变型变量。
3、hs = RGB(255, 255, 0) :把红绿蓝色彩空间的色彩值赋给变量hs(黄色)。
4、I = 35 :把35赋给变量I。
45
5、RGBValue = RGB(I, 64 + I, 128 + I) :把不变量I作为偏移量计算得到的红绿蓝色彩空间中的RGB(35, 99, 163)颜色赋给变量RGBValue。
6、Cells(5, 1). = RGBValue :把颜色赋给单元格A5的底色。
7、Cells(5, 1). = hs :把黄色赋给单元格A5的字体。
RGB函数
用来表示一个RGB颜色值。
RGB(red, green, blue)
RGB函数的参数
red 必要的参数,Variant (Integer),数值范围从0~255,表示颜色的红色成分
green 必要的参数,Variant (Integer),数值范围从0~255,表示颜色的绿色成分
Blue 必要的参数,Variant (Integer),数值范围从0~255,表示颜色的蓝色成分
注意:使用RGB函数设置颜色受系统限制,如果系统只能显示16色,那么RGB函数就不能设置出更多的颜色。
第1.33例 Rnd函数
一、题目:
要求编写一段代码,使用 Rnd 函数随机生成一个 1 到 100 的随机整数。
二、代码:
Sub 示例_1_033()
Dim x%
For x = 1 To 10
Cells(x, 2) = Int((100 * Rnd) + 1) ' 生成 1 到 100 之间的随机数值。
46
Next x
End Sub
三、代码详解
1、Sub 示例_1_033():宏程序的开始语句。宏名为示例_1_033。
2、Dim x% :声明变量x为整型变量。
3、For x = 1 To 10 :x从1 到10进行循环。
4、Cells(x, 2) = Int((100 * Rnd) + 1) :把使用Rnd 函数产生的随机数乘100加1以后再取整得到的数值依次赋给B列单元格。
Rnd 函数
返回一个包含随机数值的 Single。
Rnd[(number)]
可选的 number 参数是 Single 或任何有效的数值表达式。
返回值
如果 number 的值是 Rnd 生成
小于 0 每次都使用 number 作为随机数种子得到的相同结果。
大于 0 序列中的下一个随机数。
等于 0 最近生成的数。
省略 序列中的下一个随机数。
说明
Rnd 函数返回小于 1 但大于或等于 0 的值。
number 的值决定了 Rnd 生成随机数的方式。
对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的前一个数作为下一个数的种子。
47
在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。
为了生成某个范围内的随机整数,可使用以下公式:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。
注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。
第1.34例 Round函数
一、题目:
要求编写一段代码,使用 Round 函数返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。
二、代码:
Sub 示例_1_034()
Dim Zdz
Zdz = Round(5.235, 2) '返回5.24
Zdz = Round(5.225, 2) '返回5.22
Zdz = Round(2.5) '返回2
Zdz = Round(2.6) '返回3
End Sub
三、代码详解
1、Sub 示例_1_034():宏程序的开始语句。宏名为示例_1_034。
2、Dim Zdz! :声明变量Zdz为单精度浮点型变量。!是单精度浮点型的类型声明字符,其它类型声明字符请见第1_024例。
3、Zdz = Round(5.235, 2) :把指定数值5.235运用Round 函数按照小数点后面2位进行四舍五入运算的结果赋给变量Zdz,返回5.24。
4、Zdz = Round(5.225, 2) :把指定数值5.225运用Round 函数按照小数点后面2位进行四舍五入运算的结果赋给变量Zdz,返回5.22。请大家注意:这里的答案不准确!与我
48
们运用工作表Round函数运算的结果不一样。其原因是VBA的Round 函数采用的是Banker舍入法,而不是算术舍入。按照Banker舍入规则,如果保留位数的下一位数字正好是5且其后没有其它的有效数字,则依保留位最后一位“偶舍奇入”的方法进行处理。
所以应该用工作表函数来代替这个VBA函数:即用(2.5)来代替Round(2.5)。
Round函数
返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。
Round(expression [,numdecimalplaces])
Round函数有如下的参数:
expression 必需的。要进行四舍五入运算的数值表达式。
numdecimalplaces 可选的。数字值,表示进行四舍五入运算时,小数点右边应保留的位数。如果忽略,则Round函数返回整数。
第1.35例 Split 函数
一、题目:
要求编写一段代码,运用 Split 函数返回一个一维数组。
二、代码:
Sub 示例_1_035()
Dim x%,aa,Arr
For x=1 to 5
aa=aa & x & “,”
Next x
49
版权声明:本文标题:(word完整版)vba常用代码大全,推荐文档 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705986367h496773.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论