admin 管理员组

文章数量: 887043


2024年1月18日发(作者:vb菱形编程代码大全)

Abs 函数

返回参数的绝对值,其类型和参数相同。

语法

Abs(number)

必要的

number 参数是任何有效的数值表达式,如果

number

包含 Null,则返回 Null,如果

number

是未初始化的变量,则返回 0。

说明

一个数的绝对值是将正负号去掉以后的值。例如,ABS(-1) 和 ABS(1) 都返回 1。

Abs 函数示例

本示例使用 Abs 函数计算数的绝对值。

Dim MyNumber

MyNumber = Abs(50.3) ' 返回 50.3。

MyNumber = Abs(-50.3) ' 返回 50.3。

Array 函数

返回一个包含数组的 Variant。

语法

Array(arglist)

所需的

arglist 参数是一个用逗号隔开的值表,这些值用于给 Variant 所包含的数组的各元素赋值。如果不提供参数,则创建一个长度为 0 的数组。

说明

用来表示数组元素的符号由变量名、圆括号以及括号中的所需元素的索引号组成。在下面的示例中,第一条语句创建一个 Variant 的变量 A。第二条语句将一个数组赋给变量 A。最后一条语句将该数组的第二个元素的值赋给另一个变量。

Dim A As Variant

A = Array(10,20,30)

B = A(2)

使用 Array 函数创建的数组的下界受 Option Base 语句指定的下界的决定,

除非 Array 是由类型库(例如 )名称限定。如果是由类型库名称限定,则 Array 不受 Option Base 的影响。

注意 没有作为数组声明的 Variant 也可以表示数组。除了长度固定的字符串以及用户定义类型之外,Variant 变量可以表示任何类型的数组。尽管一个包含数组的 Variant 和一个元素为 Variant 类型的数组在概念上有所不同,但对数组元素的访问方式是相同的。

Array 函数示例

该示例使用 Array 函数来返回一个包含 Variant 的数组。

Dim MyWeek, MyDay

MyWeek = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")

'返回值假设下界的设置为 1(使用 Option Base

' 语句)。

MyDay = MyWeek(2) 'MyDay 的值为 "Tue"。

MyDay = MyWeek(4) 'MyDay 的值为 "Thu"。

Asc 函数

返回一个 Integer,代表字符串中首字母的字符代码。

语法

Asc(string)

必要的

string

参数可以是任何有效的字符串表达式。如果

string 中没有包含任何字符,则会产生运行时错误。

说明

在非 DBCS 系统下,返回值范围为 0 – 255 。在 DBCS 系统下,则为 -32768 –

32767。

注意 AscB 函数作用于包含在字符串中的字节数据,AscB 返回第一个字节的字符代码,而非字符的字符代码。AscW 函数返回 Unicode 字符代码,若平台不支持 Unicode,则与 Asc 函数功能相同。

Asc 函数示例

本示例使用 Asc 函数返回字符串首字母的字符值(ASCII 值)。

Dim MyNumber

MyNumber = Asc("A") ' 返回 65。

MyNumber = Asc("a") ' 返回 97。

MyNumber = Asc("Apple") ' 返回 65。

Atn 函数

返回一个 Double,指定一个数的反正切值。

语法

Atn(number)

必要的

number 参数是一个 Double或任何有效的数值表达式。

说明

Atn 函数的参数值 (number) 为直角三角形两边的比值并返回以弧度为单位的角。这个比值是角的对边长度除以角的邻边长度之商。

值的范围在 -pi/2 和 pi/2 弧度之间。

为了将角度转换为弧度,请将角度乘以 pi/180。为了将弧度转换为角度,请将弧度乘以 180/pi。

注意 Atn 是 Tan 的反三角函数,Tan 的参数值为角度,返回直角三角形的两条边的比值。不要将 Atn 和余切函数混淆,余切函数值是正切函数值的倒数,cotangent = (1/tangent)。

CallByName 函数

执行一个对象的方法,或者设置或返回一个对象的属性。

语法

CallByName(object, procedurename, calltype,[arguments()])

CallByName 函数的语法有以下部分:

部分 描述

必需的;变体型(对象)。函数将要执行的对象的名称。

方法名称的字符串表达式。

object

procedurename 必需的;变体型(字符串)。一个包含该对象的属性名称或者calltype

arguments()

说明

CallByName 函数用于获取或者设置一个属性,或者在运行时使用一个字符串名称来调用一个方法。

在下面的例子中,第一行使用 CallByName 来设置一个文本框的 MousePointer

属性,第二行得到 MousePointer 属性的值,第三行调用 Move 方法来移动文本框:

CallByName Text1, "MousePointer", vbLet, vbCrosshair

Result = CallByName (Text1, "MousePointer", vbGet)

CallByName Text1, "Move", vbMethod, 100, 100

必需的;常数。一个 vbCallType 类型的常数,代表正在被调用的过程的类型。

可选的:变体型(数组)。

Choose 函数

从参数列表中选择并返回一个值。

语法

Choose(index,

choice-1[, choice-2, ... [,

choice-n]])

Choose 函数的语法具有以下几个部分:

部分 描述

index

choice

必要参数,数值表达式或字段,它的运算结果是一个数值,且界于 1

和可选择的项目数之间。

必要参数,Variant 表达式,包含可选择项目的其中之一。

说明

Choose 会根据

index

的值来返回选择项列表中的某个值。如果

index

是 1,则 Choose 会返回列表中的第 1 个选择项。如果

index

是 2,则会返回列表中的第 2 个选择项,以此类推。

可以使用 Choose 来查阅一个列表中的项目。例如,如果

index

所指定的值为 3,而

choice-1 = "one"、choice-2 = "two"、且

choice-3 = "three",那么 Choose

将返回 "three"。当

index

代表一选项组中的值时,则这项功能将会特别有用。

即使它只返回一个选项值,Choose 仍然会计算列表中的每个选择项。所以应该注意到这项副作用。例如,当在每个选择项表达式中使用了 MsgBox 函数作为其中的一部分时,每计算一个选择项,就会显示一次消息框。

index小于 1 或大于列出的选择项数目时,Choose 函数返回 Null。

如果

index 不是整数,则会先四舍五入为与其最接近的整数。

Choose 函数示例

本示例使用 Choose 函数来显示一个名称,该名称对应於用 Ind 参数传递到过程之中的索引。

Function GetChoice(Ind As Integer)

GetChoice = Choose(Ind, "Speedy", "United", "Federal")

End Function

Chr 函数

返回 String,其中包含有与指定的字符代码相关的字符 。

语法

Chr(charcode)

必要的

charcode 参数是一个用来识别某字符的 Long。

说明

0 到 31 之间的数字与标准的非打印 ASCII 代码相同。例如,Chr(10) 可以返回换行字符。charcode

的正常范围为 0 – 255。然而,在 DBCS 系统,charcode

的实际范围为 -32768 到 65535。

注意 ChrB 函数作用于包含在 String 中的字节数据。ChrB 总是返回一个单字节,而不是返回一个字符,一个字符可能是一个或两个字节。ChrW 函数返回包含 Unicode 的 String,若在不支持 Unicode 的平台上,则其功能与 Chr 函数相同。

Chr 函数示例

本示例使用 Chr 函数来返回指定字符码所代表的字符。

Dim MyChar

MyChar = Chr(65) ' 返回 A。

MyChar = Chr(97) ' 返回 a。

MyChar = Chr(62) ' 返回 >。

MyChar = Chr(37) ' 返回 %。

Command 函数

返回命令行的参数部分,该命令行用于装入 Microsoft Visual Basic 或 Visual

Basic 开发的可执行程序。

语法

Command

说明

当从命令行装入 Visual Basic 时,/cmd 之后的命令行的任何部分作为命令行的参数传递给程序。下面的示例中,cmdlineargs 代表 Command 函数返回的参数信息。

VB /cmd cmdlineargs

对于使用 Visual Basic 开发并编译为 .exe 文件的应用程序,Command 返回出现在命令行中应用程序名之后的任何参数。例如:

MyApp cmdlineargs

想知道如何在正在使用的应用程序的用户界面中改变命令行参数,请搜寻关于“命令行参数”的帮助。

Command 函数示例

本示例在某个函数中用 Command 函数获得命令行参数,并将命令行参数以

Variant 类型之数组返回。

Function GetCommandLine(Optional MaxArgs)

'声明变量。

Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs

'检查是否提供了 MaxArgs 参数。

If IsMissing(MaxArgs) Then MaxArgs = 10

' 使数组的大小合适。

ReDim ArgArray(MaxArgs)

NumArgs = 0: InArg = False

'取得命令行参数。

CmdLine = Command()

CmdLnLen = Len(CmdLine)

'以一次一个字符的方式取出命令行参数。

For I = 1 To CmdLnLen

C = Mid(CmdLine, I, 1)

'检测是否为 space 或 tab。

If (C <> " " And C <> vbTab) Then

'若既不是 space 键,也不是 tab 键,

'则检测是否为参数内含之字符。

If Not InArg Then

'新的参数。

'检测参数是否过多。

If NumArgs = MaxArgs Then Exit For

NumArgs = NumArgs + 1

InArg = True

End If

'将字符连接到当前参数中。

ArgArray(NumArgs) = ArgArray(NumArgs) & C

Else

'找到 space 或 tab。

'将 InArg 标志设置成 False。

InArg = False

End If

Next I

'调整数组大小使其刚好符合参数个数。

ReDim Preserve ArgArray(NumArgs)

'将数组返回。

GetCommandLine = ArgArray()

End Function

Cos 函数

返回一个 Double,指定一个角的余弦值。

语法

Cos(number)

必要的

number 参数是一 Double 或任何有效的数值表达式,表示一个以弧度为单位的角。

说明

Cos 函数的参数为一个角,并返回直角三角形两边的比值。该比值为角的邻边长度除以斜边长度之商。

结果的取值范围在 -1 到 1 之间。

为了将角度转换成弧度,请将角度乘以 pi/180。为了将弧度转换成角度,请将弧度乘以 180/pi。

Cos 函数示例

本示例使用 Cos 函数计算一个角的余弦。

Dim MyAngle, MySecant

MyAngle = 1.3 ' 定义角度(以“弧度”为单位)。

MySecant = 1 / Cos(MyAngle) ' 利用余弦计算正割(sec())。

CreateObject 函数

创建并返回一个对 ActiveX 对象的引用。

语法

CreateObject(class,[servername])

CreateObject 函数的语法有如下部分:

部分 描述

必需的; Variant (String). 要创建

class

的应用程序名称和类。

servername

可选的; Variant (String). 要在其上创建对象的网络服务器名称。

class 参数使用

type 这种语法,包括以下部分:

部分 描述

必需的;Variant(字符串)。提供该对象的应用程序名。

appname

objecttype 必需的;Variant(字符串)。待创建对象的类型或类。

说明

每个支持自动化的应用程序都至少提供一种对象类型。例如,一个字处理应用程序可能会提供 Application 对象,Document 对象,以及 Toolbar 对象。

要创建 ActiveX 对象,只需将 CreateObject 返回的对象赋给一个对象变量:

'声明一个对象变量来存放该对象

'的引用。Dim as Object 采用后期绑定方式。

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("")

上述代码将启动该应用程序创建该对象,在本例中就是创建一个 Microsoft

Excel 电子数据表。对象创建后,就可以在代码中使用自定义的对象变量来引用该对象。在下面的示例中,可以使用对象变量 ExcelSheet 来访问新建对象的属性和方法,以及访问 Microsoft Excel 的其它对象,包括应用程序对象和单元格集合。

'设置 Application 对象使 Excel 可见

e = True

'在表格的第一个单元中写些文本

(1, 1).Value = "This is column A, row 1"

'将该表格保存到 C: 目录

"C: "

'使用应用程序对象的 Quit 方法关闭 Excel。

'释放该对象变量

Set ExcelSheet = Nothing

使用 As Object 子句声明对象变量,可以创建一个能包含任何类型对象引用的变量。不过,该变量访问对象是后期绑定的,也就是说,绑定在程序运行时才进行。要创建一个使用前期绑定方式的对象变量,也就是说,在程序编译时就完成绑定,则对象变量在声明时应指定类 ID。例如,可以声明并创建下列 Microsoft

Excel 引用:

Dim xlApp As ation

Dim xlBook As ok

Dim xlSheet As eet

Set xlApp = CreateObject("ation")

Set xlBook =

Set xlSheet = eets(1)

前期绑定的变量引用可以提供更好的性能,但该变量只能存放声明中所指定的类的引用。

可以将 CreateObject 函数返回的对象传给一个参数为对象的函数。例如,下面的代码创建并传递了一个 ation 对象的引用:

Call MySub (CreateObject("ation"))

可以在一个远端连网的计算机上创建一个对象,方法是把计算机的名称传递给

CreateObject 的

servername 参数。这个名称与共享名称的机器名部份相同:对于一个共享名称为 "MyServerPublic," 的

servername 参数是

"MyServer" 。

下面的代码返回在一个名为 MyServer 的远端计算机上运行的 Excel 实例的版本号:

Dim xlApp As Object

Set xlApp = CreateObject("ation", "MyServer")

n

如果远端服务器不存在或者不可用,则会发生一个运行时错误。

注意 当该对象当前没有实例时,应使用 CreateObject。如果该对象已有实例在运行,就会启动一个新的实例,并创建一个指定类型的对象。要使用当前实例,或要启动该应用程序并加载一个文件,可以使用 GetObject 函数。

如果对象已登记为单个实例对象,则不管执行多少次 CreateObject,都只能创建该对象的一个实例。

CreateObject 函数示例

该示例使用 CreateObject 函数设置一个对 Microsoft Excel 的引用 (xlApp)。它使用该引用来访问 Microsoft Excel 的 Visible 属性,并使用 Microsoft

Excel 的 Quit 方法将其关闭,最后再释放该引用。

Dim xlApp As Object '定义存放引用对象的变量。

Set xlApp = CreateObject("ation")

'如果要让该应用程序可见,

则需将 Visible 属性设为 True。

e = True

'可以使用 xlApp 访问 Microsoft Excel 的

'其它对象。

'完成时,调用 Quit 方法关闭

Set xlApp = Nothing '该应用程序,然后释放该引用。

CurDir 函数

返回一个 Variant (String),用来代表当前的路径。

语法

CurDir[(drive)]

可选的

drive 参数是一个字符串表达式,它指定一个存在的驱动器。如果没有指定驱动器,或

drive 是零长度字符串 (""),则 CurDir 会返回当前驱动器的路径。

CurDir 函数示例

本示例使用 CurDir 函数来返回当前的路径。

' 假设 C 驱动器的当前路径为“C:WINDOWSSYSTEM”。

' 假设 D 驱动器的当前路径为“D:EXCEL”。

' 假设 C 为当前的驱动器。

Dim MyPath

MyPath = CurDir ' 返回“C:WINDOWSSYSTEM”。

MyPath = CurDir("C") ' 返回“C:WINDOWSSYSTEM”。

MyPath = CurDir("D") ' 返回“D:EXCEL”。

CVErr 函数

返回 Error 子类型的 Variant,其中包含指定的错误号。

语法

CVErr(errornumber)

必要的

errornumber 参数可以是任何有效的错误号代码。

说明

可以在过程中,使用 CVErr 函数来创建用户自定义错误。例如,如果创建一个函数,它可以接受若干个参数,且正常返回一个字符串,则可以让函数来判断输入的参数,确认它们是在可接受的范围内。如果不是的话,此函数将不会返回所要的字符串。在这种情况下,CVErr 可以返回一个错误号,并告知应该采取的行动。

注意,Error 的隐式转换是不允许的,例如,不能直接把 CVErr 的返回值赋值给一个非 Variant 的变量。然而,可以对 CVErr 的返回值进行显式转换(使用

CInt、CDbl 等等),并赋值给适当的数据类型变量。

CVErr 函数示例

本示例使用 CVErr 函数返回一 Variant 类型的值,其 VarType 为 vbError

(10)。如果传进去的参数不是一个数字,用户自定义函数 CalculateDouble 将会返回错误信息。可用 CVErr 返回来自用户自定义过程的自定义错误,或改变处理运行时错误的方式。IsError 函数可用来测试返回值是否代表错误状态。

' 调用 CalculateDouble,且传入一会产生错误的参数。

Sub Test()

CalculateDouble("345.45robert")

End Sub

' 定义 CalculateDouble 函数过程。

Function CalculateDouble(Number)

If IsNumeric(Number) Then

CalculateDouble = Number * 2 ' 返回结果。

Else

CalculateDouble = CVErr(2001) ' 返回一自定义错误码。

End If

End Function

Date 函数

返回包含系统日期的 Variant (Date)。

语法

Date

说明

为了设置系统日期,请使用 Date 语句。

Date 函数示例

本示例使用 Date 函数返回系统当前的日期。

Dim MyDate

MyDate = Date ' MyDate 的值为系统当前的日期。

DateAdd 函数

返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔。

语法

DateAdd(interval, number, date)

DateAdd 函数语法中有下列命名参数:

部分 描述

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

number

date

设置

必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。

必要。Variant (Date) 或表示日期的文字,这一日期还加上了时间间隔。

interval

参数具有以下设定值:

设置 描述

yyyy 年

q

m

y

d

w

ww

h

n

s

说明

可以使用 DateAdd 函数对日期加上或减去指定的时间间隔。例如,可以用

DateAdd 来计算距今天为三十天的日期;或者计算距现在为 45 分钟的时间。

为了对

date

加上“日”,可以使用“一年的日数” (“y”),“日” (”d”)

或“一周的日数” (”w”)。

DateAdd 函数将不返回有效日期。在以下实例中将 1 月31 日加上一个月:

DateAdd(m, 1, 31-Jan-95)

上例中,DateAdd 返回 1995 年 2 月 28 日,而不是 1995 年 2 月 31 日。如果

date 是 1996 年 1 月 31 日,则由于 1996 年是闰年,返回值是 1996 年 2

月 29 日。

如果计算的日期超前 100 年(减去的年度超过

date 中的年份),就会导致错误发生。

如果

number 不是一个 Long 值,则在计算时取最接近的整数值来计算。

注意 DateAdd 返回值的格式由 Control Panel设置决定,而不是由传递到date

参数的格式决定。

一年的日数

一周的日数

分钟

DateAdd 函数示例

本示例先取得一个日期,再用 DateAdd 函数显示未来数月后的日期。

Dim FirstDate As Date ' 声明变量。

Dim IntervalType As String

Dim Number As Integer

Dim Msg

IntervalType = "m" ' "m"指定以“月份”作为间隔。

FirstDate = InputBox("Enter a date")

Number = InputBox("Enter number of months to add")

Msg = "New date: " & DateAdd(IntervalType, Number, FirstDate)

MsgBox Msg

DateDiff 函数

返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。

语法

DateDiff(interval, date1, date2[, firstdayofweek[,

firstweekofyear]])

DateDiff 函数语法中有下列命名参数:

部分 描述

必要。字符串表达式,表示用来计算date1 和

date2

的时间差的时间间隔

必要;Variant (Date)。计算中要用到的两个日期。

可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。

1 月 1 日的星期为第一周。

设置

interval

Date1□date2

Firstdayofweek

firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含

interval

参数的设定值如下:

设置 描述

yyyy 年

q

m

y

d

w

ww

h

n

s

一年的日数

一周的日数

分钟

firstdayofweek

参数的设定值如下:

常数 值 描述

使用 NLS API 设置。

星期日(缺省值)

星期一

星期二

星期三

星期四

星期五

星期六

vbUseSystem 0

vbSunday

vbMonday

vbTuesday

1

2

3

vbWednesday 4

vbThursday 5

vbFriday 6

vbSaturday 7

常数

vbUseSystem

vbFirstJan1

vbFirstFourDays

0

1

2

描述

用 NLS API 设置。

从包含 1 月 1 日的星期开始(缺省值)。

从第一个其大半个星期在新的一年的一周开始。

vbFirstFullWeek

说明

3 从第一个无跨年度的星期开始。

DateDiff 函数可用来决定两个日期之间所指定的时间间隔数目。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。

为了计算

date1 与

date2

相差的日数,可以使用“一年的日数”(y) 或“日”(d)。当

interval 是“一周的日数”(w) 时,DateDiff 返回两日期间的周数。如果

date1 是星期一,DateDiff 计算到

date2 为止的星期一的个数。这个数包含

date2 但不包含

date1。不过,如果

interval 是“周”(ww),则 DateDiff

函数返回两日期间的“日历周”数。由计算

date1 与

date2

之间星期日的个数而得。如果

date2

刚好是星期日,则

date2 也会被加进 DateDiff 的计数结果中;但不论

date1

是否为星期日,都不将它算进去。

如果

date1

date2

来得晚,则 DateDiff 函数的返回值为负数。

firstdayofweek 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。

如果

date1

date2

是日期文字,则指定的年份成为该日期的固定部分。但是,如果

date1

date2

用双引号 (" ") 括起来,且年份略而不提,则在每次计算表达式

date1

date2

时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。

在计算 12 月 31 日和来年的 1 月 1 日的年份差时,DateDiff 返回 1 表示相差一个年份,虽然实际上只相差一天而已。

DateDiff 函数示例

本示例使用 DateDiff 函数来显示某个日期与今日相差几天。

Dim TheDate As Date ' 声明变量。

Dim Msg

TheDate = InputBox("Enter a date")

Msg = "Days from today: " & DateDiff("d", Now, TheDate)

MsgBox Msg

DatePart 函数

返回一个包含已知日期的指定时间部分的 Variant (Integer)。

语法

DatePart(interval,

date[,firstdayofweek[,

firstweekofyear]])

DatePart 函数语法中有下列命名参数:

部分 描述

必要。字符串表达式,是要返回的时间间隔。

必要。要计算的 Variant (Date) 值。

可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。

月 1 日的星期为第一周。

设置

interval

date

Firstdayofweek

firstweekofyear 可选。指定一年第一周的常数。如果未予指定,则以包含 1

interval

参数的设定值如下:

设置 描述

yyyy 年

q

m

y

d

w

ww

h

n

s

一年的日数

一周的日数

分钟

firstdayofweek

参数的设定值如下:

常数 值 描述

使用 NLS API 设置。

星期日(缺省值)

星期一

星期二

星期三

星期四

星期五

星期六

vbUseSystem 0

vbSunday

vbMonday

vbTuesday

1

2

3

vbWednesday 4

vbThursday 5

vbFriday 6

vbSaturday 7

firstweekofyear

参数的设定值如下:

常数

vbUseSystem

vbFirstJan1

vbFirstFourDays

vbFirstFullWeek

说明

DatePart 函数可以用来计算日期并返回指定的时间间隔。例如,可以使用DatePart 计算某个日期是星期几或目前为几点钟。

0

1

2

3

描述

使用 NLS API 设置。

从包含 1 月 1 日的星期开始(缺省值)。

从第一个其大半个星期在新的一年的一周开始。

从第一个无跨年度的星期开始。

firstdayofweek 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。

如果

date 是日期文字,则指定的年份成为该日期的固定部分。但是,如果

date

用双引号 (" ") 括起来,且年份略而不提,则在每次计算

date 表达式时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。

DatePart 函数示例

本示例先取得一个日期,然后使用 DatePart 函数显示该日期是发生在该年的哪一季。

Dim TheDate As Date ' 声明变量。

Dim Msg

TheDate = InputBox("Enter a date:")

Msg = "Quarter: " & DatePart("q", TheDate)

MsgBox Msg

DateSerial 函数

返回包含指定的年、月、日的 Variant (Date)。

语法

DateSerial(year,

month,

day)

DateSerial 函数语法有下列的命名参数:

部分 描述

必要;Integer。从 100 到 9999 间的整数,或一数值表达式。

year

month 必要;Integer。任何数值表达式。

day

说明

为了指定某个日期,如 1991 年 12 月 31 日,DateSerial 函数中的每个参数的取值范围应该是可接受的;即,日的取值范围应在 1-31 之间,而月的取值范围应在 1-12 之间。但是,当一个数值表达式表示某日之前或其后的年、月、日数时,也可以为每个使用这个数值表达式的参数指定相对日期。

以下示例中使用了数值表达式代替绝对日期。这里,DateSerial 函数返回 1990

年 8 月 1 日的 十 年 (1990 - 10) 零两个月 (8 - 2) 又一天 (1 - 1) 之前的日期;换句话说,就是 1980 年 5 月 31 日。

DateSerial(1990 - 10, 8 - 2, 1 - 1)

必要;Integer。任何数值表达式。

year 参数的数值若介于 0 与 29 之间,则将其解释为 2000–2029年,若介于

30 和 99 之间则解释为1930–1999年。而对所有其它

year 参数,则请用四位数值表示(如 1800)。

当任何一个参数的取值超出可接受的范围时,它会适时进位到下一个较大的时间单位。例如,如果指定了 35 天,则这个天数被解释成一个月加上多出来的日数,多出来的日数将由其年份与月份来决定。如果一个参数值超出 -32,768

到 32,7DateSerial 函数示例

本示例使用 DateSerial 函数来将指定的年月日转换为 Date 类型的表达式。

Dim MyDate

' MyDate 的值为 February 12,1969, Date 类型。

MyDate = DateSerial(1969, 2, 12) ' 返回日期。

67 的范围,就会导致错误发生。

DateValue 函数

返回一个 Variant (Date)。

语法

DateValue(date)

必要的

date 参数

date

通常是字符串表达式,表示从 100 年 1 月 1 日到

9999 年 12 月 31 日之间的一个日期。但是,date

也可以是任何表达式,其所代表的日期、时间在上述范围内。

说明

如果

date 是一个字符串,且其内容只有数字以及分隔数字的日期分隔符,则

DateValue 就会根据系统中指定的短日期格式来识别月、日、年的顺序。DateValue 也识别明确的英文月份名称,全名或缩写均可。例如,除了

12/30/1991 和 12/30/91 之外,DateValue 也识别 December 30, 1991 和 Dec

30, 1991。

如果

date

中略去了年这一部分,DateValue 就会使用由计算机系统日期设置的当前年份。

如果

date

参数包含时间信息,则 DateValue 不会返回它。但是,如果

date 包含无效时间信息(如 89:98),则会导致错误发生。

DateValue 函数示例

本示例使用 DateValue 函数将字符串转换为日期。也可以使用日期原义直接 给

Variant 或 Date 类型的变量赋值日期,例如 MyDate = #2/12/69# 。

Dim MyDate

MyDate = DateValue("February 12, 1969") ' 返回日期。

Day 函数

返回一个 Variant (Integer),其值为 1 到 31 之间的整数,表示一个月中的某一日。

语法

Day(date)

必要的

date 参数,可以是任何能够表示日期的 Variant、数值表达式、字符串表达式或它们的组合。如果

date

包含 Null,则返回 Null。

Day 函数示例

本示例使用 Day 函数将指定的日期转换为该月的第几天。在开发环境中,日期原义会根据系统的地区设置,以短式日期格式显示。。

Dim MyDate, MyDay

MyDate = #February 12, 1969# ' 指定一日期。

MyDay = Day(MyDate) ' MyDay 的值为 12。

DDB 函数

返回一个 Double,指定一笔资产在一特定期间内的折旧。可使用双下落收复平衡方法或其它指定的方法进行计算。

语法

DDB(cost,

salvage,

life,

period[,

factor])

DDB 函数具有下列命名参数:

部分 描述

必要。Double 指定资产的初始成本。

cost

salvage

life

period

factor

说明

必要。Double.指定使用年限结束时的资产价值。

必要。Double 指定资产可用的可用年限。

必要。Double 指定计算资产折旧所用的那一期间。

可选。Variant 指定收复平衡下落时的速度。如果省略的话,2(双下落方法)为缺省值。

双下落收复平衡方法用加速利率法计算折旧。在第一段时期,折旧为最高,而在接下来的期间内降低。

life 和

period 参数必须用相同的单位表示。例如,如果

life 用月份表示,则

period 也必须用月份表示。所有参数都必须是正值。

DDB 函数使用下列公式计算在一定时期后的折旧:

折旧 /

period = ((cost

alvage) *

factor) /

life

DDB 函数示例

本示例使用 DDB 函数来计算某项资产在一特定期间内的折旧。计算时需给定资产的初始成本(InitCost),使用年限退出时所余的价值(SalvageVal),以“年”为单位之可用的生命长度(LifeTime),以及所要计算折旧的期间年限(Depr)。

Dim Fmt, InitCost, SalvageVal, MonthLife, LifeTime, DepYear, Depr

Const YRMOS = 12 ' 一年之中的月份数。

Fmt = "###,##0.00"

InitCost = InputBox("What's the initial cost of the asset?")

SalvageVal = InputBox("Enter the asset's value at end of its life.”)

MonthLife = InputBox("What's the asset's useful life in months?")

Do While MonthLife < YRMOS ' 确保计算期间大于等于一年 。

MsgBox "Asset life must be a year or more."

MonthLife = InputBox("What's the asset's useful life in months?")

Loop

LifeTime = MonthLife / YRMOS ' 将月份数转成年份数。

If LifeTime <> Int(MonthLife / YRMOS) Then

LifeTime = Int(LifeTime + 1) ' 四舍五入至最接近的年份。

End If

DepYear = CInt(InputBox("Enter year for depreciation calculation."))

Do While DepYear < 1 Or DepYear > LifeTime

MsgBox "You must enter at least 1 but not more than " & LifeTime

DepYear = InputBox("Enter year for depreciation calculation.")

Loop

Depr = DDB(InitCost, SalvageVal, LifeTime, DepYear)

MsgBox "The depreciation for year " & DepYear & " is " & _

Format(Depr, Fmt) & "."

Dir 函数

返回一个 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。

语法

Dir[(pathname[, attributes])]

Dir 函数的语法具有以下几个部分:

部分 描述

pathname 可选参数。用来指定文件名的字符串表达式,可能包含目录或文

件夹、以及驱动器。如果没有找到

pathname,则会返回零长度字符串 ("")。

attributes 可选参数。常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配

pathname 但不包含属性的文件。

设置值

attributes 参数的设置可为:

常数

vbNormal

vbReadOnly

vbHidden

VbSystem

vbVolume

0

1

2

4

8

描述

(缺省) 指定没有属性的文件。

指定无属性的只读文件

指定无属性的隐藏文件

指定无属性的系统文件

指定卷标文件;如果指定了其它属性,则忽略vbVolume

vbDirectory

16 指定无属性文件及其路径和文件夹。

注意 这些常数是由 VBA 所指定的,在程序代码中的任何位置,可以使用这些常数来替换真正的数值。

说明

Dir 支持多字符 (*) 和单字符 (?) 的通配符来指定多重文件。

由于 Macintosh 不支持通配符,使用文件类型指定文件组。可以使用 MacID 函数指定文件类型而不用文件名。比如,下列语句返回当前文件夹中第一个TEXT文件的名称:

Dir("SomePath", MacID("TEXT"))

为选中文件夹中所有文件,指定一空串:

Dir("")

在 Microsoft Windows 中,如果在Dir函数中使用MacID函数,将产生错误。

任何大于256的attribute值都被认为是MacID 函数的值。

在第一次调用 Dir 函数时,必须指定

pathname,否则会产生错误。如果也指定了文件属性,那么就必须包括

pathname。

Dir 会返回匹配

pathname 的第一个文件名。若想得到其它匹配

pathname 的文件名,再一次调用 Dir,且不要使用参数。如果已没有合乎条件的文件,则 Dir

会返回一个零长度字符串 ("")。一旦返回值为零长度字符串,并要再次调用 Dir

时,就必须指定

pathname,否则会产生错误。不必访问到所有匹配当前

pathname

的文件名,就可以改变到一个新的

pathname

上。但是,不能以递归方式来调用

Dir 函数。以 vbDirectory 属性来调用 Dir 不能连续地返回子目录。

提示 由于文件名并不会以特别的次序来返回,所以可以将文件名存储在一个数组中,然后再对这个数组排序。

Dir 函数示例

本示例使用 Dir 函数来检查某些文件或目录是否存在。在 Macintosh 计算机上,默认驱动器名称是 “HD” ,并且路径部分由冒号取代反斜线隔开。而且

Microsoft Windows 的通配符在 Mac 中可以作为有效字符出现在文件名中。也可以使用 MacID 函数来指定文件组。

Dim MyFile, MyPath, MyName

' 返回“” (如果该文件存在)。

MyFile = Dir("C:")

' 返回带指定扩展名的文件名。如果超过一个 *.ini 文件存在,

' 函数将返回按条件第一个找到的文件名。

MyFile = Dir("C:WINDOWS*.ini")

' 若第二次调用 Dir 函数,但不带任何参数,则函数将返回同一目录下的下一个 *.ini 文件。

MyFile = Dir

' 返回找到的第一个隐式 *.TXT 文件。

MyFile = Dir("*.TXT", vbHidden)

' 显示 C: 目录下的名称。

MyPath = "c:" ' 指定路径。

MyName = Dir(MyPath, vbDirectory) ' 找寻第一项。

Do While MyName <> "" ' 开始循环。

' 跳过当前的目录及上层目录。

If MyName <> "." And MyName <> ".." Then

' 使用位比较来确定 MyName 代表一目录。

If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then

MyName ' 如果它是一个目录,将其名称显示出来。

End If

End If

MyName = Dir ' 查找下一个目录。

Loop

DoEvents 函数语法

DoEvents( )

说明

转让控制权,以便让操作系统处理其它的事件。

DoEvents 函数会返回一个 Integer,以代表 Visual Basic 独立版本中打开的窗体数目,例如,Visual Basic,专业版,在其它的应用程序中,DoEvents 返回 0。

DoEvents 会将控制权传给操作系统。当操作系统处理完队列中的事件,并且在

SendKeys 队列中的所有键也都已送出之后,返回控制权。

DoEvents 对于简化诸如允许用户取消一个已启动的过程 — 例如搜寻一个文件

— 特别有用。对于长时间过程,放弃控制权最好使用定时器或通过委派任务给

ActiveX EXE 部件来完成。以后,任务还是完全独立于应用程序,多任务及时间片由操作系统来处理。

小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用

DoEvents,因为DoEvents 函数示例

下列示例在循环中使用 DoEvents 函数,每当循环完成 1000 次时,将执行让给操作系统。DoEvents 返回仅当主应用程序是 Visual Basic时,打开的窗体个数。

' 创建一个变量来保存加载的 Visual Basic 可见窗体的个数。

Dim I, OpenForms

For I = 1 To 150000 ' 循环开始。

If I Mod 1000 = 0 Then ' 如果循环一已完成了 1000 次。

OpenForms = DoEvents ' 将执行让给操作系统。

End If

Next I ' 将循环计数器加一。

此时不能放弃控制权。

Environ 函数

返回 String,它关连于一个操作系统环境变量。 在 Macintosh 中不可用

语法

Environ({envstring |

number})

Environ 函数的语法含有以下这些命名参数:

部分 描述

envstring 可选参数。包含一个环境变量名的字符串表达式。

number 可选参数。数值表达式,用来表示环境字符串在环境字符串表格中的数值顺序。number 参数可以是任意的数值表达式,不过在计算前,它会先转换为一个整数。

说明

如果在环境字符串表格中找不到

envstring,则会返回一个零长度字符串 ("")。如果找到,则 Environ 会返回一段文本,文本是赋值给指定的

envstring

的,也就是说,在环境字符串表格中对应那个环境变量的等号 (=) 后面的那段文本。

如果指定了

number,则在环境字符串表格中相应位置上的字符串会返回。在这种情况下,Environ 会返回整个文本,包括

envstring。如果在指定位置上没有环境字符串,那么 Environ 会返回一个零长度字符串。

Environ 函数示例

本示例使用 Environ 函数来提供来自环境变量表中 PATH 语句的长度及路径项目数。

Dim EnvString, Indx, Msg, PathLen ' 声明变量。

Indx = 1 ' 设置索引值的初值为 1。

Do

EnvString = Environ(Indx) ' 取得环境变量。

If Left(EnvString, 5) = "PATH=" Then ' 检查 PATH 项。

PathLen = Len(Environ("PATH")) ' 取得长度。

Msg = "PATH entry = " & Indx & " and length = " & PathLen

Exit Do

Else

Indx = Indx + 1 ' 不是 PATH 项,

End If ' 则跳过此项,继续检查下一项。

Loop Until EnvString = ""

If PathLen > 0 Then

MsgBox Msg ' 显示消息。

Else

MsgBox "No PATH environment variable exists."

End If

EOF 函数

返回一个 Integer,它包含 Boolean 值 True,表明已经到达为 Random 或顺序

Input 打开的文件的结尾。

语法

EOF(filenumber)

必要的

filenumber

参数是一个 Integer,包含任何有效的文件号。

说明

使用 EOF 是为了避免因试图在文件结尾处进行输入而产生的错误。

直到到达文件的结尾,EOF 函数都返回 False。对于为访问 Random 或 Binary

而打开的文件,直到最后一次执行的 Get 语句无法读出完整的记录时,EOF 都返回 False。

对于为访问 Binary 而打开的文件,在 EOF 函数返回 True 之前,试图使用

Input 函数读出整个文件的任何尝试都会导致错误发生。在用 Input 函数读出二进制文件时,要用 LOF 和 Loc 函数来替换 EOF 函数,或者将 Get 函数与

EOF 函数配合使用。对于为 Output 打开的文件,EOF 总是返回 True。

EOF 函数示例

本示例使用 EOF 函数来检测文件尾。示例中假设 MYFILE 为有数个文本行的文本文件。

Dim InputData

Open "MYFILE" For Input As #1 ' 为输入打开文件。

Do While Not EOF(1) ' 检查文件尾。

Line Input #1, InputData ' 读入一行数据。

InputData ' 在立即窗口中显示。

Loop

Close #1 ' 关闭文件。

Error 函数

返回对应于已知错误号的错误信息。

语法

Error[(errornumber)]

这个可选的

errornumber 参数可以为任何有效的错误号。如果

errornumber 是有效的错误号,但尚未被定义,则 Error 将返回字符串“应用程序定义的错误或对象定义的错误”。如果

errornumber

不是有效的错误号,则会导致错误发生。如果省略

errornumber,就会返回与最近一次运行时错误对应的消息。如果没有发生运行时错误,或者

errornumber 是 0,则 Error 返回一个长度为零的字符串 ("")。

说明

请检查 Err 对象的属性设置,以便认定最近一次运行时错误。Error 函数的返回值对应于 Err 对象的 Description 属性。

Error 函数示例

本示例使用 Error 函数来显示指定的错误代号所代表之错误信息。

Dim ErrorNumber

For ErrorNumber = 61 To 64 ' 从错误代号 61 循环到 64。

Error(ErrorNumber) ' 将错误信息在立即窗口中显示。

Next ErrorNumber

Error 函数

返回对应于已知错误号的错误信息。

语法

Error[(errornumber)]

这个可选的

errornumber 参数可以为任何有效的错误号。如果

errornumber 是有效的错误号,但尚未被定义,则 Error 将返回字符串“应用程序定义的错误或对象定义的错误”。如果

errornumber

不是有效的错误号,则会导致错误发生。如果省略

errornumber,就会返回与最近一次运行时错误对应的消息。如果没有发生运行时错误,或者

errornumber 是 0,则 Error 返回一个长度为零的字符串 ("")。

说明

请检查 Err 对象的属性设置,以便认定最近一次运行时错误。Error 函数的返回值对应于 Err 对象的 Description 属性。

Error 函数示例

本示例使用 Error 函数来显示指定的错误代号所代表之错误信息。

Dim ErrorNumber

For ErrorNumber = 61 To 64 ' 从错误代号 61 循环到 64。

Error(ErrorNumber) ' 将错误信息在立即窗口中显示。

Next ErrorNumber

Exp 函数

返回 Double,指定

e(自然对数的底)的某次方。

语法

Exp(number)

必要的

number 参数

number 是 Double或任何有效的数值表达式。

说明

如果

number 的值超过 709.782712893,则会导致错误发生。常数

e 的值大约是 2.718282。

注意 Exp 函数的作用和 Log 的作用互补,所以有时也称做反对数。

Exp 函数示例

本示例使用 Exp 函数计算

e(e

~ 2.71828)的某次方。

Dim MyAngle, MyHSin

' 定义角度(以“弧度”为单位)。

MyAngle = 1.3

' 计算双曲正弦函数值(sin())。

MyHSin = (Exp(MyAngle) - Exp(-1 * MyAngle)) / 2

FileAttr 函数

返回一个 Long,表示使用 Open 语句所打开文件的文件方式。

语法

FileAttr(filenumber,

returntype)

FileAttr 函数的语法具有以下几个命名参数:

部分 描述

filenumber 必要。Integer 类型,任何有效的文件号。

returntype 必要。Integer 类型。它是数字,指出返回信息的类型。指定 1 则可返回一个代表文件方式的数值。而仅仅在 16 位系统中, 指定

2 才可以恢复操作系统的文件句柄。在 32 位系统中不支持

Returntype 2,它会导致错误发生。

返回值

returntype 参数值为 1 时,下列返回值指出文件访问方式:

方式 值

Input 1

Output 2

Random 4

Append 8

Binary 32

FileAttr 函数示例

本示例使用 FileAttr 函数来返回一个已打开文件的文件模式以及文件句柄。返回文件句柄只适用于 16位系统; 在 32位 系统中, 把 2 作为第二个参数时将产生错误。

Dim FileNum, Mode, Handle

FileNum = 1 ' 指定文件号。

Open "TESTFILE" For Append As FileNum ' 打开文件。

Mode = FileAttr(FileNum, 1) ' 返回 8(增加文件方式)。

Handle = FileAttr(FileNum, 2) ' 返回文件句柄。

Close FileNum ' 关闭文件。

FileDateTime 函数

语法

返回一个 Variant (Date),此为一个文件被创建或最后修改后的日期和时间。

FileDateTime(pathname)

必要的

pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。

FileDateTime 函数示例

本示例使用 FileDateTime 函数来得知文件创建或最近修改的日期与时间。日期与时间的显示格式依系统的地区设置而定。

Dim MyStamp

' 假设 TESTFILE 上次被修改的时间为 1993 年 2 月 12 日下午 4 时 35 分

47 秒。

' 假设 English/U.S. 地区设置。

MyStamp = FileDateTime("TESTFILE")Filedatetime("TESTFILE") ' 返回“2/12/93 4:35:47 PM”。

FileLen 函数

返回一个 Long,代表一个文件的长度,单位是字节。

语法

FileLen(pathname)

必要的

pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。

说明

当调用 FileLen 函数时,如果所指定的文件已经打开,则返回的值是这个文件在打开前的大小。

注意 若要取得一个打开文件的长度大小,使用 LOF 函数。

FileLen 函数示例

本示例使用 FileLen 来返回文件的字节长度。示例中假设 TESTFILE 为含有数据的文件。

Dim MySize

MySize = FileLen("TESTFILE")Filelen("TESTFILE") ' 返回文件的字节长度。

Filter函数

描述

返回一个下标从零开始的数组,该数组包含基于指定筛选条件的一个字符串数组的子集。

语法

Filter(InputStrings,

Value[,

Include[,

Compare]])

Filter函数语法有如下几部分:

部分 描述

必需的。要执行搜索的一维字符串数组。

必需的。要搜索的字符串。

可选的。Boolean值,表示返回子串包含还是不包含Value字符串。如果Include是True,Filter返回的是包含Value子字符串的数组子集。如果Include是False,Filter返回的是不包含Value子字符串的数组子集。

可选的。数字值,表示所使用的字符串比较类型。有关其设置,请参阅下面的“设置值”部分。

InputStrings

Value

Include

Compare

设置值

Compare参数的设置值如下:

常数

vbUseCompareOption

vbBinaryCompare

vbTextCompare

vbDatabaseCompare

–1

0

1

2

描述

使用Option Compare语句的设置值来执行比较。

执行二进制比较。

执行文字比较。

只用于Microsoft Access。基于您的数据库信息来执行比较。

说明

如果在InputStrings中没有发现与Value相匹配的值,Filter返回一个空数组。如果InputStrings是Null或不是一个一维数组,则产生错误。

Filter函数所返回的数组,其元素数目刚好是所找到的匹配项目数。

Format 函数

返回 Variant (String),其中含有一个表达式,它是根据格式表达式中的指令来格式化的。

语法

Format(expression[,

format[,

firstdayofweek[,

firstweekofyear]]])

Format 函数的语法具有下面几个部分:

部分 说明

必要参数。任何有效的表达式。

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

expression

format

firstdayofweek 可选参数。常数,表示一星期的第一天。

firstweekofyear 可选参数。常数,表示一年的第一周。

设置值

firstdayofweek 参数有下面设置:

常数 值 说明

使用 NLS API 设置。

星期日(缺省)

星期一

星期二

星期三

星期四

vbUseSystem 0

VbSunday

vbMonday

vbTuesday

1

2

3

vbWednesday 4

vbThursday 5

vbFriday 6 星期五

星期六 vbSaturday 7

firstweekofyear 参数有下面设置:

常数

vbUseSystem

vbFirstJan1

vbFirstFourDays

VbFirstFullWeek

说明

格式化

数字

日期和时间

日期和时间序数

字符串

如果在格式化数字时没有指定

format,Format 会提供与 Str 函数类似的功能,尽管它是国际化的。然而,以 Format 作用在正数上不会保留正负号空间,而以

Str 的话则会。

作法

使用预先定义的命名数值格式或创建用户自定义数值格式。

使用预先定义的命名日期/时间格式或创建用户自定义日期/时间格式。

使用日期和时间格式或数值格式。

创建自定义的字符串格式。

0

1

2

3

说明

使用 NLS API 设置。

从包含一月一日的那一周开始(缺省)。

从本年第一周开始,而此周至少有四天在本年中。

从本年第一周开始,而此周完全在本年中。

Format 函数示例

本示例显示用 Format 函数做格式化输出的不同用法。对于日期分隔号(/),时间分隔号(:),以及 AM/ PM 等文本而言,其真正的显示格式会因计算机上的国际标准不同而有所差异。在开发阶段,日期与时间是以短日期的格式,配合代码的国际标准来显示的。而在运行时,短日期则是根据系统的国际标准而定,

而系统的国际标准和代码的国际标准可能并不相同。本示例中是假设国际标准为

English/United States。

MyTime 及 MyDate 在开发环境下,使用系统的短日期设置显示出来的。

Dim MyTime, MyDate, MyStr

MyTime = #17:04:23#

MyDate = #January 27, 1993#

' 以系统设置的长时间格式返回当前系统时间。

MyStr = Format(Time, "Long Time")

' 以系统设置的长日期格式返回当前系统日期。

MyStr = Format(Date, "Long Date")

MyStr = Format(MyTime, "h:m:s") ' 返回 "17:4:23"。

MyStr = Format(MyTime, "hh:mm:ss AMPM") ' 返回 "05:04:23 PM"。

MyStr = Format(MyDate, "dddd, mmm d yyyy") ' 返回 "Wednesday, Jan 27

1993"。

' 如果没有指定格式,则返回字符串。

MyStr = Format(23) ' 返回 "23"。

' 用户自定义的格式。

MyStr = Format(5459.4, "##,##0。00") ' 返回 "5,459.40"。

MyStr = Format(334。9, "###0。00") ' 返回 "334.90"。

MyStr = Format(5, "0。00%") ' 返回 "500.00%"。

MyStr = Format("HELLO", "<") ' 返回 "hello"。

MyStr = Format("This is it", ">") ' 返回 "THIS IS IT"。

FormatCurrency函数

描述

返回一个货币值格式的表达式,它使用系统控制面板中定义的货币符号。

语法

FormatCurrency(Expression[,NumDigitsAfterDecimal

[,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

FormatCurrency函数语法有如下几部分:

部分 描述

Expression

NumDigitsAfterDecimal

必需的。要格式化的表达式。

可选的。数字值,表示小数点右边的显示位数。缺省值为–1,表示使用计算机的区域设置值。

可选的。三态常数,表示小数点前是否显示一个零。关于其值,请参阅“设置值”部分。

可选的。三态常数,表示是否把负数值放在园括号内。关于其值,请参阅“设置值”部分。

可选的。三态常数,表示是否用组分隔符对数字进行分组,组分隔符由计算机的区域设置值指定。关于其值,请参阅“设置值”部分。

IncludeLeadingDigit

UseParensForNegativeNumbers

GroupDigits

设置值

IncludeLeadingDigit、UseParensForNegativeNumbers

GroupDigits参数的设置值如下:

常数

TristateTrue

TristateFalse

–1

0

描述

True

False

使用计算机区域设置中的设置值。 TristateUseDefault –2

说明

当忽略一个或多个选项参数时,被忽略的参数值由计算机的区域设置值提供。

货币符号相对货币值的位置由计算机的区域设置值确定。

注意 除起始的零外,所有设置值信息都来自“区域设置”的“货币”选项卡,起始的零来自“数字”选项卡。

FormatDateTime函数

描述

返回一个日期或时间格式的表达式。

语法

FormatDateTime(Date[,NamedFormat])

FormatDateTime函数语法有如下几部分:

部分 描述

必需的。要被格式化的日期表达式。

可选的。数字值,表示日期/时间所使用的格式。如果忽略该值,则使用vbGeneralDate。

Date

NamedFormat

设置值

NamedFormat参数的设置值如下:

常数

vbGeneralDate

0

描述

显示日期和/或时间。如果有日期部分,则用短日期格式显示。如果有时间部分,则用长时间格式显示。如果都有,两部分都显示。

用计算机区域设置值中指定的长日期格式显示日期。

用计算机区域设置值中指定的短日期格式显示日期。

用计算机区域设置值中指定的时间格式显示时间。

用24小时格式(hh:mm)显示时间。

vbLongDate

vbShortDate

vbLongTime

vbShortTime

1

2

3

4

FormatNumber函数

描述

返回一个数字格式的表达式。

语法

FormatNumber(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit

[,UseParensForNegativeNumbers [,GroupDigits]]]])

FormatNumber函数语法有如下几部分:

部分 描述

必需的。要被格式化的表达式。

可选的。数字值,表示小数点右边的显示位数。缺省值为–1,表示使用计算机的区域设置值。

可选的。三态常数,表示小数点前是否显示零。关于其值,请参阅“设置值”部分。

可选的。三态常数,表示是否把负数值放在圆括号内。关于其值,请参阅“设置值”部分。

可选的。的三态常数,表示是否用组分隔符对数字分组,组分隔符在计算机的区域设置值中指定。关于其值,请参阅“设置值”部分。

Expression

NumDigitsAfterDecimal

IncludeLeadingDigit

UseParensForNegativeNumbers

GroupDigits

设置值

IncludeLeadingDigit、UseParensForNegativeNumbers和GroupDigits参数的设置值如下:

常数

TristateTrue

TristateFalse

–1

0

描述

True

False

用计算机区域设置值中的设置值。 TristateUseDefault –2

说明

当忽略一个或多个选项参数时,被忽略的参数值由计算机的区域设置值提供。

注意 所有设置值信息都来自“区域设置”的“数字”选项卡。

FormatPercent函数

描述

返回一个百分比格式(乘以100)的表达式,后面有%符号。

语法

FormatPercent(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit

[,UseParensForNegativeNumbers [,GroupDigits]]]])

FormatPercent函数语法有如下几部分:

部分 描述

必需的。要格式化的表达式。

可选的。表示小数点右边的显示位数。缺省值为–1,表示使用计算机的区域设置值。

可选的。三态常数,表示小数点前是否显示零。关于其值,请参阅“设置值”部分。

可选的。三态常数,表示是否把负数放在圆括号内。关于其值,请参阅“设置值”部分。

可选的。三态常数,表示是否用组分隔符对数字进行分组,组分隔符在计算机的区域设置值中指定。关于其值,请参阅“设置值”部分。

Expression

NumDigitsAfterDecimal

IncludeLeadingDigit

UseParensForNegativeNumbers

GroupDigits

设置值

IncludeLeadingDigit、UseParensForNegativeNumbers和GroupDigits参数的设置值如下:

常数

TristateTrue

TristateFalse

–1

0

描述

True

False

TristateUseDefault –2

说明

使用计算机区域设置值中的设置值。

当忽略一个或多个选项参数时,被忽略的参数值由计算机的区域设置值提供。

注意 所有的设置值信息都来自“区域设置”的“数字”选项卡。

FreeFile 函数

返回一个 Integer,代表下一个可供 Open 语句使用的文件号。

语法

FreeFile[(rangenumber)]

可选的参数

rangenumber

是一个 Variant,它指定一个范围,以便返回该范围之内的下一个可用文件号。指定 0(缺省值)则返回一个介于 1 – 255 之间的文件号。指定 1 则返回一个介于 256 – 511 之间的文件号。

说明

使用 FreeFile 提供一个尚未使用的文件号。

FreeFile 函数示例

本示例使用 FreeFile 函数来返回下一个可用的文件号。在循环中,共打开五个输出文件,并在每个文件中写入一些数据。

Dim MyIndex, FileNumber

For MyIndex = 1 To 5 ' 循环五次。

FileNumber = FreeFile ' 取得未使用的文件号。

Open "TEST" & MyIndex For Output As #FileNumber ' 创建文件名。

Write #FileNumber, "This is a sample." ' 输出文本至文件中。

Close #FileNumber ' 关闭文件。

Next MyIndex

FV 函数

返回一个 Double,指定未来的定期定额支付且利率固定的年金。

语法

FV(rate,

nper,

pmt[,

pv[,

type]])

FV 函数有下列命名参数:

部分 描述

rate 必要。Double,指定每一期的利率。例如,如果有一笔贷款年百分率 (APR)

为百分之十且按月付款的汽车贷款,则利率为 0.1/12 或 0.0083。

nper 必要。Integer,指定一笔年金的付款总期限。例如,如果对一笔为期四年的汽车贷款选择按月付款方式,则贷款期限共有 4 * 12(或 48)个付款期。

pmt

pv

必要。Double 指定每一期的付款金额。付款金额通常包含本金和利息,而且此付款金额在年金的有效期间是不会改变的。

可选。Variant,指定未来一系列付款(或一次付清款项)的现值。例如,当借钱买一辆汽车时时,向贷方所借的金额为未来每月付款给贷方的现值。如果省略的话,缺省值为 0。

请使用 0。如果贷款在周期开始时到期,请使用 1。如果省略的话,缺省值为 0。

type 可选。Variant,指定贷款到期时间。如果贷款在贷款周期结束时到期,

说明

年金是一段时间内一系列固定现金支付。年金可以是贷款(如房屋抵押贷款),也可以是一笔投资(如按月储蓄计划)。

在支付期间,必须用相同的单位来计算

rate 和

nper 参数。例如,如果

rate 用月份来计算,则

nper 也必须用月份来计算。

对所有参数,用负数表示现金支出(如储蓄存款),而用正数表示现金收入(如红利支票)。

GetAllSettings 函数

从 Windows 注册表中返回应用程序项目的所有注册表项设置及其相应值(开始是由 SaveSetting 产生)。

语法

GetAllSettings(appname,

section)

GetAllSettings 函数的语法具有下列命名参数:

部分 描述

appname

必要。字符串表达式,包含应用程序或工程的名称,并要求这些应用程序或工程有注册表项设置

section 必要。字符串表达式,包含区域名称,并要求该区域有注册表项设置。GetAllSettings 返回 Variant,其内容为字符串的二维数组,该二维数组包含指定区域中的所有注册表项设置及其对应值。

说明

如果

appname

section

不存在,则 GetAllSettings 返回未初始化的

Variant。

GetAllSettings 函数示例

本示例首先使用 SaveSetting 语句来建立 Windows注册区里

appname 应用程序的项目,然后再使用 GetAllSettings 函数来取得设置值并显示出来。请注意,应用程序名和

section 名称不能用 GetAllSettings 函数取得。最后,使用

DeleteSetting 语句将该应用程序项删除。

' 用来保存 GetAllSettings 函数所返回之二维数组数据的变量

' 整型数是用来计数用。

Dim MySettings As Variant, intSettings As Integer

' 在注册区中添加设置值。

SaveSetting appname := "MyApp", section := "Startup", _

key := "Top", setting := 75

SaveSetting "MyApp","Startup", "Left", 50

' 取得输入项的设置值。

MySettings = GetAllSettings(appname := "MyApp", section := "Startup")

For intSettings = LBound(MySettings, 1) To UBound(MySettings, 1)

MySettings(intSettings, 0), MySettings(intSettings,

1)

Next intSettings

DeleteSetting "MyApp", "Startup"

GetAttr 函数

返回一个 Integer,此为一个文件、目录、或文件夹的属性。

语法

GetAttr(pathname)

必要的

pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。

返回值

由 GetAttr 返回的值,是下面这些属性值的总和:

常数

vbNormal

0

描述

常规

只读

隐藏

系统文件

目录或文件夹

上次备份以后,文件已经改变

指定的文件名是别名。

vbReadOnly 1

vbHidden

vbSystem

2

4

vbDirectory 16

vbArchive

vbalias

32

64

注意 这些常数是由 VBA 指定的,在程序代码中的任何位置,可以使用这些常数来替换真正的值。

说明

若要判断是否设置了某个属性,在 GetAttr 函数与想要得知的属性值之间使用

And 运算符与逐位比较。如果所得的结果不为零,则表示设置了这个属性值。例如,在下面的 And 表达式中,如果档案 (Archive) 属性没有设置,则返回值为零:

Result = GetAttr(FName) And vbArchive

如果文件的档案属性已设置,则返回非零的数值。

GetAttr 函数示例

本示例使用 GetAttr 函数来得知文件及目录或文件夹的属性。

Dim MyAttr

' 假设 TESTFILE 具有隐含属性。

MyAttr = GetAttr("TESTFILE") ' 返回 2。

' 如果 TESTFILE 有隐含属性,则返回非零值。

MyAttr And vbHidden

' 假设 TESTFILE 具有隐含的只读属性。

MyAttr = GetAttr("TESTFILE") ' 返回 3 。

' 如果 TESTFILE 含有隐含属性,则返回非零值。

MyAttr And (vbHidden + vbReadOnly)

' 假设 MYDIR 代表一目录或文件夹。

MyAttr = GetAttr("MYDIR") ' 返回 16。

GetAutoServerSettings 函数

返回关于 ActiveX 部件的注册状态的信息。

语法

oServerSettings([progid], [clsid])

GetAutoServerSettings 函数语法有这些部分:

部分 描述

必需的。对象表达式,其值为“应用于”列表中的对象。

可选的。variant 表达式,为该部件指定 ProgID。

可选的。variant 表达式,为该部件指定 CLSID。

object

progid

clsid

返回值

GetAutoServerSettings 函数返回含有关于给定的 ActiveX 部件的值的数组的

Variant 变量。其索引值和描述如下:

1

2

3

4

说明

描述

若 ActiveX 部件被远程注册则为 True。

远程机器名。

RPC 网络协议名。

RPC 身份验证级。

如果值丢失或无效,则该值为空字符串。如果在使用方法期间出错,则返回值为

Empty 类型的 Variant 变量。

GetAutoServerSettings 函数示例

这个示例检索关于远程注册对象 "Hello" 的信息:

Sub ViewHello()

Dim oRegClass As New RegClass

Dim vRC As Variant

vRC = oServerSettings _

("lass")

If Not(IsEmpty(vRC)) Then

If vRC(1) Then

MsgBox "Hello is registered remotely on a " _

& "server named: " & vRC(1)

Else

MsgBox "Hello is registered locally."

End If

End if

End Sub

GetObject 函数

返回文件中的 ActiveX 对象的引用。

语法

GetObject([pathname] [,

class])

GetObject 函数的语法包含下面几个命名参数:

部分 描述

可选的;Variant (String)。包含待检索对象的文件的全路径和名称。如果省略

pathname,则

class 是必需的。

可选的;Variant (String)。代表该对象的类的字符串。

pathname

class

其中,class 参数的语法格式为

type,且语法的各个部分如下:

部分 描述

必需的;Variant (String)。提供该对象的应用程序名称。

appname

objecttype 必需的;Variant (String)。待创建对象的类型或类。

说明

使用 GetObject 函数可以访问文件中的 ActiveX 对象,而且可以将该对象赋给对象变量。可以使用 Set 语句将 GetObject 返回的对象赋给对象变量。例如:

Dim CADObject As Object

Set CADObject = GetObject("C:")

当执行上述代码时,就会启动与指定的

pathname 相关联的应用程序,同时激活指定文件中的对象。

如果

pathname 是一个零长度的字符串 (""),则 GetObject 返回指定类型的新的对象实例。如果省略了

pathname 参数,则 GetObject 返回指定类型的当前活动的对象。如果当前没有指定类型的对象,就会出错。

有些应用程序允许只激活文件的一部分,其方法是在文件名后加上一个惊叹号

(!) 以及用于标识想要激活的文件部分的字符串。关于如何创建这种字符串的信息,请参阅有关应用程序创建对象的文档。

例如,在绘图应用程序中,一个存放在文件中的图可能有多层。可以使用下述代码来激活图中被称为 的层:

Set LayerObject = GetObject("C:!Layer3")

如果不指定对象的

class,则自动化会根据所提供的文件名,来确定被启动的应用程序以及被激活的对象。不过,有些文件可能不止支持一种对象类。例如,图片可能支持三种不同类型的对象:Application 对象,Drawing 对象,以及

Toolbar 对象,所有这些都是同一个文件中的一部分。为了说明要具体激活文件中的哪种对象,就应使用这个可选的

class 参数。例如:

Dim MyObject As Object

Set MyObject = GetObject("C:", "G")

在上述例子中,FIGMENT 是一个绘图应用程序的名称,而 DRAWING 则是它支持的一种对象类型。

对象被激活之后,就可以在代码中使用所定义的对象变量来引用它。在前面的例子中,可以使用对象变量 MyObject 来访问这个新对象的属性和方法。例如:

9, 90

Text 9, 100, "Hello, world."

"C:"

注意 当对象当前已有实例,或要创建已加载的文件的对象时,就使用 GetObject

函数。如果对象当前还没有实例,或不想启动已加载文件的对象,则应使用

CreateObject 函数。

如果对象已注册为单个实例的对象,则不管执行多少次 CreateObject,都只能创建该对象的一个实例。若使用单个实例对象,当使用零长度字符串 ("") 语法调用时,GetObject 总是返回同一个实例,而若省略

pathname 参数,就会出错。不能使用 GetObject 来获取 Visual Basic 创建的类的引用。

GetObject 函数示例

该示例使用 GetObject 函数来获取对指定的 Microsoft Excel 的工作表

(MyXL) 的引用。它使用工作表的 Application 属性来显示或关闭 Microsoft

Excel 等等。DetectExcel Sub 过程通过调用两个 API 函数,来查找 Microsoft

Excel。如果 Microsoft Excel 正在运行,则将其放入运行对象表(Running

Object Table)中。如果 Microsoft Excel 不在运行,则第一次调用 GetObject

将导致错误。在本例中,出现该错误则把 ExcelWasNotRunning 标志设为 True。第二次调用 GetObject 是指定要打开的一个文件。如果 Microsoft Excel 不在运行,则这个第二次的调用将启动该程序,并返回一个指定文件 ()

所对应的工作表的引用。该文件必须位于指定的位置;否则将产生 Visual Basic

错误及自动化错误。随后的示例代码将 Microsoft Excel 及包含指定工作表的窗口设为可见。最后,如果在此前没有 Microsoft Excel 的副本在运行,代码就使用 Application 对象的 Quit 方法来关闭 Microsoft Excel。如果该应用程序原来就在运行,则不要试图关闭它。引用本身在设为 Nothing 后被释放。

'声明必要的 API 例程:

Declare Function FindWindow Lib "user32" Alias _

"FindWindowA" (ByVal lpClassName as String, _


本文标签: 函数 返回 指定 使用 文件