vba常用代码大全

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

前言
我们平时在工作表单元格的公式中常常使用函数,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
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 的类型声明字符是百分比符
号 (%)。

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
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函数根据指定数字选择对应的字符串。

二、代码:
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函数根据指定角度的余弦计算其正割的值。

二、代码:
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
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
三、代码详解
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函数返回某个指定日期距离今天的天数。

二、代码:
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 必要;计算中要用到的两个日期。

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的值。

DatePart 函数
DatePart(interval, date, [, firstdayofweek[, firstweekofyear]])
语法中有下列命名参数:
interval 必要。

字符串表达式,是所要加上去的时间间隔。

它具有好多设定值,与DateAdd函数相同;此例中的"q",表示季度;
Date,必要;计算中要用到的两个日期。

Firstdayofweek 可选。

指定一个星期的第一天的常数。

如果未予指定,则以星期日为第一天。

firstweekofyear 可选。

指定一年的第一周的常数。

如果未予指定,则以包含 1 月 1 日的星期为第一周。

第1.9例 DateSerial函数
一、题目:
要求编写一段代码,运用DateSerial函数返回指定日期的Date类型。

二、代码:
Dim zdrq
zdrq = DateSerial(2008, 8, 8)
MsgBox zdrq
End 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 间的整数,或一数值表达式。

month 必要;整型。

任何数值表达式。

day 必要;整型。

任何数值表达式。

4、MsgBox zdrq :利用MsgBox函数显示zdrq的值。

第1.10例 DateValue 函数
一、题目:
要求编写一段代码,运用DateValue函数返回指定日期的Date类型。

二、代码:
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。

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)的值。

Day函数返回一个其值为 1 到 31 之间的整数,表示一个月中的某一日。

语法
Day (date)
Day 函数的参数:
date必要的,可以是任何能够表示日期的 Variant、数值表达式、字符串表达式或它们的组合。

第1.12例 Dir函数
一、题目:
要求编写一段代码,运用Dir函数返回一个文件夹的文件列表。

二、代码:
Sub 示例_1_12()
Dim wjm
wjm = Dir("C:\WINDOWS\WIN.ini")
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:\WINDOWS\WIN.ini") :
如果该文件存在则返回“WIN.INI”(在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()
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”
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 可选参数。

有效的命名表达式或用户自定义格式表达式。

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)
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 函数
根据表达式的值,来返回两部分中的其中一个。

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
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])
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)
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 函数
返回 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"
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 执行二进制比较。

区分大小写。

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 的数组。

使用 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。

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为可变型变量。

3、ss=Array("一月", "二月", "三月") :把Array函数得到的一维数组赋给变量ss。

4、[A1]=Join(ss,”,”) :把数组ss的各个元素用逗号连接起来赋给A1单元格。

返回”一月,二月,三月”;
如果省略分隔符 [A1]=Join(ss) 则用空格来分隔,返回”一月二月三月”;
如果分隔符是零长度字符串("") [A1]=Join(ss,””) 则没有分隔符了,返回”一月二月三月”。

Join函数
返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的。

Join(sourcearray[, delimiter])。

相关文档
最新文档