VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > vb >
  • vba常用函数详细介绍及示例

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

收起
Abs 函数
返回将传递给指定数字的绝对值的相同类型的值。

语法
Abs(数字)

必需的_number_ 参数可以是vb.net教程任何有效的数值表达式。 如果 number 包含 Null,则返回 Null;如果它是未初始化的变量,则返回 0。

数字的绝对值是其无符号大小。 例如, ABS(-1)和ABS(1)都返回。 1

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

Dim MyNumber
MyNumber = Abs(50.3)    ' Returns 50.3.
MyNumber = Abs(-50.3)    ' Returns 50.3.
  • 1
  • 2
  • 3

Int、Fix 函数 返回数字的整数部分。

语法 Int(数字)

必需的_number_参数是Double或任何有效的数值表达式。 如果_number_包含null, 则返回null 。

示例 此示例演示 Int 和 Fix 函数如何返回数字的整数部分。 如果为负数参数,则 Int 函数将返回小于或等于该数的第一个负整数; Fix 函数返回大于或等于该数的第一个负整数。

Dim MyNumber MyNumber = Int(99.8) ’ Returns 99. MyNumber = Fix(99.2) ’ Returns 99.

MyNumber = Int(-99.8) ’ Returns -100. MyNumber = Fix(-99.8) ’ Returns -99.

MyNumber = Int(-99.2) ’ Returns -100. MyNumber = Fix(-99.2) ’ Returns -99. Rnd 函数 返回一个包含伪随机数字的Single 。

语法 Rnd[(数字)]

可选的_Number_ 参数是一个单个或任何有效的数值表达式。

返回值 返回值

如果_Number_为

则 Rnd 生成

小于 0

使用_number_作为种子时, 每次使用相同的数字。

大于 0

伪随机序列中的下一个号码。

等于 0

最近生成的数字。

未提供

伪随机序列中的下一个号码。

备注 Rnd 函数返回一个小于 1 但大于或等于 0 的值。

_Number_的值决定了Rnd生成为随机数字的方式:

对于任何给定的原始种子,由于对 Rnd 函数的每个后续调用会将之前的数字用作序列中的下一个数字的种子,因此,将生成相同的数字序列。

在调用 Rnd 之前,请使用不带参数的 Randomize 语句来通过基于系统计时器的种子初始化随机数字生成器。

若要生成给定范围中的随机整数,使用此公式:

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

此处,upperbound 是范围中的最大数字,_lowerbound_是范围中的最小数字。

示例 此示例使用 Rnd 函数生成一个介于 1 和 6 之间的随机整数值。

Dim MyValue As Integer
MyValue = Int((6 * Rnd) + 1)    ' Generate random value between 1 and 6.
  • 1
  • 2

Date 函数 返回包含当前系统日期的 Variant (Date)。

语法 Date

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

Dim MyDate MyDate = Date ’ MyDate contains the current system date. DateAdd 函数 返回一个 Variant (Date) 值,其中包含已添加了指定时间间隔的日期。

语法 DateAdd(interval, number, date)

DateAdd 函数语法包含以下命名参数:

语法

Part

说明

interval

必需。 作为要添加的时间间隔的字符串表达式。

number

必需。 作为要添加的时间间隔数的数值表达式。 它可以为正(获取将来日期)或为负(获取过去的日期)。

date

必需。 Variant (Date) 或文本,表示添加间隔的日期。

示例 此示例采用一个日期并使用 DateAdd 函数显示指定月数后的对应日期。

Dim FirstDate As Date ' Declare variables.

Dim IntervalType As String
Dim Number As Integer
Dim Msg As String
IntervalType = "m"    ' "m" specifies months as interval.
FirstDate = InputBox("Enter a date")
Number = InputBox("Enter number of months to add")
Msg = "New date: " & DateAdd(IntervalType, Number, FirstDate)
MsgBox Msg
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

DateDiff 函数 返回一个 Variant (Long),指定两个指定的日期之间的时间间隔数。

语法 DateDiff(interval, date1, date2, [ firstdayofweek, [ firstweekofyear ]] )

DateDiff 函数语法包括这些命名参数:

语法

Part

说明

interval

必需。 表示用于计算 date1 和 date2 之间差异的时间间隔的字符串表达式。

date1、date2

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

firstdayofweek

可选。 一个指定一周的第一天的常量。 如果未指定,则会假定为星期日。

firstweekofyear

可选。 一个指定一年的第一周的常量。 如果未指定,则会假定 1 月 1 日出现的那一周为第一周。

示例 此示例使用 DateDiff 函数显示给定日期与今天之间的天数。

Dim TheDate As Date ’ Declare variables. Dim Msg TheDate = InputBox(“Enter a date”) Msg = "Days from today: " & DateDiff(“d”, Now, TheDate) MsgBox Msg Dir 函数 返回一个 String,它表示与指定模式或文件属性或驱动器的卷标匹配的文件、目录或文件夹的名称。

语法 Dir [ (pathname, [ attributes ] ) ]

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

语法

Part

说明

pathname

可选。 指定文件名的字符串表达式,可包括目录或文件夹和驱动器。 如果未找到 pathname,则返回零长度字符串 ("")。

attributes

可选。 其和指定文件属性的常量或数值表达式。 如果省略它,则返回与 pathname 匹配但没有属性的文件。

注解 在 Microsoft Windows 中,Dir 支持使用多字符 (*) 和单字符 (?) 通配符来指定多个文件。 在 Macintosh 上,这些字符被视为有效文件名称字符,且不能用作指定多个文件的通配符。

因为 Macintosh 不支持通配符,请使用文件类型来标识文件组。 可以使用 MacID 函数指定文件类型而不是使用文件名。 例如,以下语句返回当前文件夹中的第一个 TEXT 文件的名称:

Dir(“SomePath”, MacID(“TEXT”)) 若要循环访问文件夹中的所有文件,请指定一个空字符串:

Dir("") 示例 将d:\data下面的excel文件的数据合并到一个excel工作簿中

Dim s as string

Dim I as integer

Dim w as workbook

 

S=dir(“d:”\data\*.xls*) //dir查询所有满足条件的文件名称

For I =1 to 100

Set w =workbooks.open(d:”\data\” & str)

w.sheets(1).copy after:=thisworkbook.sheets(thisworkbook.sheets.count)

thisworkbook.sheets(thisworkbook.sheets.count).name=split(w.name,.)(0)

wb.close
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

if s=”” then //如果s等于空,说明已执行完了最后一个文件,退出循环。如果不退出会报错。

exit for

end if

next

InStr 函数 返回一个 **Variant **(Long) 值,指定一个字符串在另一个字符串中首次出现的位置。

语法 InStr([ start ], string1, string2, [ compare ])

InStr 函数语法有以下参数:

语法

Part

说明

start

可选。 设置每次搜索的起始位置的数字表达式。 如果忽略,则搜索从第一个字符位置开始。 如果 start 包含 Null,则出现错误。 如果指定了 compare,则 start 参数是必需的。

string1

必需。 要搜索的字符串表达式。

string2

必需。 搜索到的字符串表达式。

compare

可选。 指定字符串比较的类型。 如果 compare 为 Null,则将发生错误。 如果省略 compare,则 Option Compare 设置将决定比较的类型。 指定有效的 LCID (LocaleID) 以在比较中使用区域设置特定规则。

示例 本示例使用 InStr 函数来返回某字符串在其他字符串中首次出现的位置。

Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP"    ' String to search in.
SearchChar = "P"    ' Search for "P".
 
' A textual comparison starting at position 4. Returns 6.
MyPos = Instr(4, SearchString, SearchChar, 1)    
 
' A binary comparison starting at position 1. Returns 9.
MyPos = Instr(1, SearchString, SearchChar, 0)
 
' Comparison is binary by default (last argument is omitted).
MyPos = Instr(SearchString, SearchChar)    ' Returns 9.
 
MyPos = Instr(1, SearchString, "W")    ' Returns 0.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

IsNumeric 函数 返回指示表达式是否可评估为数值的“Boolean”**** 值。

语法 IsNumeric(表达式)

必需的_expression_ 参数是一个包含数值表达式或字符串表达式的Variant 。

示例 此示例使用“IsNumeric”**** 函数确定变量是否可评估为数值。

Dim MyVar, MyCheck
MyVar = "53"    ' Assign value.
MyCheck = IsNumeric(MyVar)    ' Returns True.
 
MyVar = "459.95"    ' Assign value.
MyCheck = IsNumeric(MyVar)    ' Returns True.
 
MyVar = "45 Help"    ' Assign value.
MyCheck = IsNumeric(MyVar)    ' Returns False.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Join 函数 返回通过连接数组中包含的大量子字符串创建的字符串。

语法 联接(sourcearray, [定界符])

Join 函数语法包含以下命名参数:

语法

sourcearray

必需。 一维度组,包含要连接的子字符串。

分隔符

可选。 用于分隔返回字符串中子字符串的字符串。 如果省略,将使用空格 ("")。 如果 delimiter 是一个零长度字符串 (""),将连接列表中的所有项,而不使用分隔符。

LBound 函数 返回一个 Long 型值,其中包含指示的数组维度的最小可用下标。

语法 LBound(arrayname, [ dimension ])

LBound 函数的语法包含以下部分:

语法

Part

说明

arrayname

必需。 数组变量的名称;遵循标准变量命名约定。

维度

可选;Variant (Long)。 指示返回哪个维度的下限的整数。 1 表示第一个维度,2 表示第二个维度,依此类推。 如果省略 dimension,则假定为 1。

备注 LBound函数与UBound 函数结合使用, 以确定数组的大小。 使用 UBound 函数可查找数组维度的上限。

LBound 对具有以下维度的数组返回下表中的值:

备注

语句

返回值

LBound(A, 1)

1

LBound(A, 2)

0

LBound(A, 3)

-3

任何维度的默认下限均为0或 1, 具体取决于Option Base 语句的设置。 使用array 函数创建的数组的底数为零;它不受Option Base的影响。

使用Dim、 Private、 Public、 ReDim或Static语句中的To子句设置维度的数组可以有任何整数值作为下限。

示例 此示例使用 LBound 函数确定指示的数组维度的最小可用下标。 使用 Option Base 语句可覆盖默认基准数组下标值 0。

Dim Lower
Dim MyArray(1 To 10, 5 To 15, 10 To 20)     ' Declare array variables.
Dim AnyArray(10)
Lower = Lbound(MyArray, 1)     ' Returns 1.
Lower = Lbound(MyArray, 3)    ' Returns 10.
Lower = Lbound(AnyArray)    ' Returns 0 or 1, depending on
    ' setting of Option Base.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

UBound 函数 返回包含指定的数组维度的最大可用下标的Long数据类型。

语法 UBound(arrayname, [ dimension ])

UBound函数的语法包含这些部分。

语法

Part

说明

arrayname

必需。 数组变量的名称;遵循标准变量命名约定。

维度

可选;Variant (Long)。 指示返回哪一个维度的上限的整数。 对第一个维度使用 1,对第二个维度使用 2,依此类推。 如果省略 dimension,则假定为 1。

备注 将UBound函数与LBound 函数结合使用, 以确定数组的大小。 使用 LBound 函数可查明数组维度的下限。

UBound 为具有这些维度的数组返回以下值:

示例 此示例使用 UBound 函数确定数组的指定维度的最大可用下标。

Dim AnyString, MyStr
AnyString = "Hello World"    ' Define string.
MyStr = Left(AnyString, 1)   ' Returns "H".
MyStr = Left(AnyString, 7)   ' Returns "Hello W".
MyStr = Left(AnyString, 20)  ' Returns "Hello World".
  • 1
  • 2
  • 3
  • 4
  • 5

Left 函数 返回一个包含字符串左侧指定字符数的 Variant (String)。

语法 Left(string, length)

Left 函数语法包括这些命名参数:

语法

Part

说明

string

必需。 从中返回最左侧字符的字符串表达式。 如果_字符串_包含 Null,则返回 Null。

Length

必需;Variant (Long)。 数值表达式指示要返回多少字符。 如果为 0,则返回零长度字符串 ("")。 如果大于或等于“字符串” __ 中的字符数量,则返回整个字符串。

示例 此示例使用 Left 函数返回字符串左侧指定的字符数。

Dim MyString, FirstWord, LastWord, MidWords MyString = “Mid Function Demo” ’ Create text string. FirstWord = Mid(MyString, 1, 3) ’ Returns “Mid”. LastWord = Mid(MyString, 14, 4) ’ Returns “Demo”. MidWords = Mid(MyString, 5) ’ Returns “Function Demo”.

Mid 函数 返回一个 Variant (String),其中包含字符串中的指定数量的字符。

语法 Mid(string, start, [ length ])

Mid 函数语法包含以下命名参数:

语法

Part

说明

string

必需。 从中返回字符的字符串表达式。 如果_字符串_包含 Null,则返回 Null。

start

必需,Long。 _字符串_中被视为开始部分的字符位置。 如果 start 大于_字符串_中的字符数,则 Mid 返回零长度字符串 ("")。

Length

可选;Variant (Long)。 要返回的字符的数目。 如果省略此部分或此部分中的数目少于文本中的 length 字符数(包括 start 处的字符),则将返回从 start 位置到字符串末尾的所有字符。

示例 使用 Mid 函数返回字符串中的指定数目的字符。

Dim Upper
Dim MyArray(1 To 10, 5 To 15, 10 To 20)    ' Declare array variables.
Dim AnyArray(10)
Upper = UBound(MyArray, 1)    ' Returns 10.
Upper = UBound(MyArray, 3)    ' Returns 20.
Upper = UBound(AnyArray)      ' Returns 10.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Right 函数 返回了从字符串的右边开始包含特定数目的字符的“变量”(“字符串”)。

语法 右(string, length)

Right函数语法具有以下命名参数。

语法

Part

说明

string

必需。 字符串表达式,从中返回最右边的字符。 如果_字符串_包含 Null,则返回 Null。

Length

必需;Variant (Long)。 数值表达式指示要返回多少字符。 如果为 0,则返回零长度字符串 ("")。 如果大于或等于“字符串” __ 中的字符数量,则返回整个字符串。

示例 此示例使用了“权限”**** 函数已返回从字符串右边开始的字符的指定数量。

Dim AnyString, MyStr
AnyString = "Hello World"      ' Define string.
MyStr = Right(AnyString, 1)    ' Returns "d".
MyStr = Right(AnyString, 6)    ' Returns " World".
MyStr = Right(AnyString, 20)   ' Returns "Hello World".
  • 1
  • 2
  • 3
  • 4
  • 5

MsgBox 函数 在对话框中显示消息,等待用户单击按钮,并返回一个整数,指示用户单击的哪个按钮。

语法 MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])

MsgBox 函数语法具有以下命名参数:

语法

部分

说明

prompt

必需项。 字符串表达式在对话框中显示为消息。 prompt 的最大长度约为 1024 个字符,具体取决于所使用的字符的宽度。 如果 prompt 包含两行以上,则可以在每行之间使用回车符 (Chr(13))、换行符 (Chr(10)) 或回车换行符组合 (Chr(13) & Chr(10)) 将其分隔。

buttons

可选。 数值表达式,用于指定要显示按钮的数量和类型、要使用的图标样式、默认按钮的标识和消息框的形式的值之和。 如果省略,则 buttons 的默认值为 0。

title

可选。 对话框标题栏中显示的字符串表达式。 如果省略 title,则标题栏中将显示应用程序名称。

helpfile

可选。 用于标识帮助文件的字符串表达式,前者用于为对话框提供上下文相关的帮助。 如果提供 helpfile,则也必须提供 context。

context

可选。 帮助上下文数值的数值表达式,该数值由帮助作者为相应的帮助主题分配。 如果提供 context,则也必须提供 helpfile。

示例 此示例使用 MsgBox 函数,在具有“是”和“否”按钮的对话框中显示严重错误消息。 指定的默认响应为选择“否”按钮。 MsgBox 函数返回的值取决于用户选择的按钮。 此示例假定 DEMO.HLP 为帮助文件,该文件包含帮助上下文数值等于 1000 的主题。

Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Do you want to continue ?"    ' Define message.
Style = vbYesNo + vbCritical + vbDefaultButton2    ' Define buttons.
Title = "MsgBox Demonstration"    ' Define title.
Help = "DEMO.HLP"    ' Define Help file.
Ctxt = 1000    ' Define topic context. 
        ' Display message.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then    ' User chose Yes.
    MyString = "Yes"    ' Perform some action.
Else    ' User chose No.
    MyString = "No"    ' Perform some action.
End If
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Split 函数 返回包含指定数目的子字符串的从零开始的一维数组。

语法 Split(expression,[定界符,[ limit,[ compare ]]]

TimeSerial 函数语法具有以下命名参数:

语法

Part

说明

expression

必需。 包含子字符串和分隔符的字符串表达式。 如果 expression 是零长度字符串 (""),则 Split 返回空数组,即不包括任何元素和数据的数组。

分隔符

可选。 用于标识子字符串限制的 String 字符。 如果省略,则假定空格符 (" ") 为分隔符。 如果 delimiter 是零长度字符串,则返回包含完整 expression 字符串的只含单一元素的数组。

可选。 要返回的子字符串的数目;-1 表示返回所有子字符串。

compare

可选。 指示计算子字符串时使用的比较类型的数值。 请参阅“设置”部分以了解各个值。

示例 本示例演示如何使用Split函数。

Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Do you want to continue ?"    ' Define message.
Style = vbYesNo + vbCritical + vbDefaultButton2    ' Define buttons.
Title = "MsgBox Demonstration"    ' Define title.
Help = "DEMO.HLP"    ' Define Help file.
Ctxt = 1000    ' Define topic context. 
        ' Display message.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then    ' User chose Yes.
    MyString = "Yes"    ' Perform some action.
Else    ' User chose No.
    MyString = "No"    ' Perform some action.
End If

相关教程