精华内容
下载资源
问答
  • VBA函数大全(自己整理的) 里面整理了vba所有内置函数 方便查阅
  • VBA函数-大全

    2018-05-09 23:12:39
    vba 函数速查手册,做成vb窗口形式 点击按钮就可以查看
  • EXCEL VBA 函数大全

    2012-09-06 14:06:15
    最全的VBA 函数,开发利器,熟悉VBA的朋友可以下载,我一直在用
  • VBA函数大全

    2012-09-17 14:56:23
    vba函数大全 pdf版本 清晰 完整!
  • EXCEL VBA函数手册

    2018-10-31 14:07:51
    EXCEL VBA函数手册 很实用的EXCEL VBA函数手册值得收藏
  • Excel_vba函数大全

    2010-07-15 10:04:17
    Excel_vba函数大全:而且里边有例子,相信对你一定有用。
  • word版160多个VBA自定义函数大全,功能强大,复制进excel里就能使用。
  • VBA函数大全 VBA 学习

    2010-12-10 22:34:16
    VBA函数大全 希望可以帮到有需要的童鞋
  • Excel VBA函数参考手册

    2018-02-06 16:35:41
    Abs 函数 ...Sgn 函数、数学函数中的Abs 函数、Atn 函数、Cos 函数、Exp 函数、Fix 函数、Int 函数、Log 函数、Rnd 函数、Sgn 函数、Sin 函数、Sqr 函数、Tan 函数、导出的数学函数: 导出的数学函数
  • VBA-API函数大全

    2018-05-09 23:11:25
    vba windows api函数大全,对用vba的同学们很有帮助 可以作为手册查询
  • excel VBA函数速查手册

    2018-01-28 10:32:57
    EXCEL VBA函数手册
  • Excel VBA内部函数大全

    千次阅读 2017-06-19 17:54:02
    VBA程序语言中有许多内置函数,可以帮助程序代码设计和减少代码的编写工作。 一.测试函数 IsNumeric(x) ‘是否为数字, 返回Boolean结果,True or False IsDate(x) ‘是否是日期, 返回Boolean结果,True ...

    在VBA程序语言中有许多内置函数,可以帮助程序代码设计和减少代码的编写工作。

    一.测试函数

    IsNumeric(x) ‘是否为数字, 返回Boolean结果,True or False

    IsDate(x) ‘是否是日期, 返回Boolean结果,True or False

    IsEmpty(x) ‘是否为Empty, 返回Boolean结果,True or False

    IsArray(x) ‘指出变量是否为一个数组。

    IsError(expression) ‘指出表达式是否为一个错误值

    IsNull(expression) ‘指出表达式是否不包含任何有效数据 (Null)。

    IsObject(identifier)‘指出标识符是否表示对象变量

    二.数学函数

    Sin(X)、Cos(X)、Tan(X)、Atan(x) 三角函数,单位为弧度

    Log(x) 返回x的自然对数

    Exp(x)返回 ex

    Abs(x) 返回绝对值

    Int(number)、Fix(number) 都返回参数的整数部分,区别:Int 将 -8.4 转换成 -9,而 Fix 将-8.4 转换成 -8

    Sgn(number) 返回一个 Variant (Integer),指出参数的正负号

    Sqr(number) 返回一个 Double,指定参数的平方根

    VarType(varname) 返回一个 Integer,指出变量的子类型

    Rnd(x)返回0-1之间的单精度数据,x为随机种子

    三.字符串函数

    Trim(string) 去掉string左右两端空白

    Ltrim(string) 去掉string左端空白

    Rtrim(string) 去掉string右端空白

    Len(string) 计算string长度

    Left(string, x) 取string左段x个字符组成的字符串

    Right(string, x) 取string右段x个字符组成的字符串

    Mid(string, start,x) 取string从start位开始的x个字符组成的字符串

    Ucase(string) 转换为大写

    Lcase(string) 转换为小写

    Space(x) 返回x个空白的字符串

    Asc(string) 返回一个 integer,代表字符串中首字母的字符代码

    Chr(charcode) 返回 string,其中包含有与指定的字符代码相关的字符

    四.转换函数

    CBool(expression) 转换为Boolean型

    CByte(expression) 转换为Byte型

    CCur(expression) 转换为Currency型

    CDate(expression) 转换为Date型

    CDbl(expression) 转换为Double型

    CDec(expression) 转换为Decemal型

    CInt(expression) 转换为Integer型

    CLng(expression) 转换为Long型

    CSng(expression) 转换为Single型

    CStr(expression) 转换为String型

    CVar(expression) 转换为Variant型

    Val(string) 转换为数据型

    Str(number) 转换为String

    五.时间函数

    Now 返回一个 Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。

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

    Time 返回一个指明当前系统时间的 Variant (Date)。

    Timer 返回一个 Single,代表从午夜开始到现在经过的秒数。

    TimeSerial(hour, minute, second) 返回一个 Variant (Date),包含具有具体时、分、秒的时间。

    DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) 返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目

    Second(time) 返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一分钟之中的某个秒

    Minute(time) 返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一小时中的某分钟

    Hour(time) 返回一个 Variant (Integer),其值为 0 到 23 之间的整数,表示一天之中的某一钟点

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

    Month(date) 返回一个 Variant (Integer),其值为 1 到 12 之间的整数,表示一年中的某月

    Year(date) 返回 Variant (Integer),包含表示年份的整数。

    Weekday(date, [firstdayofweek]) 返回一个 Variant (Integer),包含一个整数,代表某个日期是星期几


    展开全文
  • EXCELVBA函数参考手册

    2017-07-04 11:18:58
    VBA 函数参考手册
  • Access-VBA函数大全

    2007-06-08 08:58:52
    Access2003宏的详细介绍
  • vba常用函数详细介绍及示例

    千次阅读 2020-07-17 10:53:08
    Abs 函数 返回将传递给指定数字的绝对值的相同类型的值。 语法 Abs(数字) 必需的_number_ 参数可以是任何有效的数值表达式。 如果 number 包含 Null,则返回 Null;如果它是未初始化的变量,则返回 0。 数字的...

    Abs 函数

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

    语法

    Abs(数字)

    必需的_number_ 参数可以是任何有效的数值表达式。 如果 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.

    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.

    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

    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

    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.

    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.

    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、 ReDimStatic语句中的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.

    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".

     

    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.
     

    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".

    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

     

    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

     

    每天学一点,薪资翻一番。

    在公众号“学会数据分析”中回复wps可获取带vba版和其他高级版本的免费破解版wps

    之后后会整理更全面的函数分享到公众号中

    展开全文
  • shell编程与普通的编程语言相比,shell编程可以用来执行一些流程调度以及任务量比较轻的处理流程的处理工具--因为毕竟是系统命令的整合调用,处理的时候,都会产生系统调用,在处理任务量大且比较复杂的流程的任务时...
  • Excel VBA 对象属性函数参考,比较全面,excel vba编程必备帮助文档。
  • VBA_自定义函数大全

    2017-12-04 20:08:23
    VBA_自定义函数大全,讲解详细,希望对爱好者能有所帮助。
  • VBA 自定义函数大全
  • 包含8个自定义函数: 1.提取中文,支持多个中英文交替2.赋值3.Copy首行,给其他行赋值4.获得链接5.截字符串中首尾两个-之间的部分6.提取中文前面的英文7.截取字符串中最后一次出现要str之后的字符串
  • Excel-165个VBA自定义函数大全
  • AUTOCAD VBA 常用函数

    2015-10-11 15:58:59
    AUTOCAD VBA开发中常用的一些自定义函数,辅助解决开发中的问题,资源来源于网络,希望对学习有帮助。
  • VBA-自定义函数大全

    2017-06-13 23:08:39
    VBA-自定义函数大全
  • WPS表格 VBA帮助文件

    2019-01-20 13:53:16
    金山出的WPS表格(Excel)VBA的帮助文件,看起来比微软Excel VBA的帮助文件相对简单,示例更为详细易懂
  • AutoCAD vba函数

    2019-05-07 22:08:55
    AutoCAD二次开发vba函数库查询辞典,学习AutoCAD二次开发的资料。
  • vba常用函数

    万次阅读 多人点赞 2017-07-06 16:12:25
    1,vba字符串函数列表: Trim(string) 去掉string左右两端空白 Ltrim(string) 去掉string左端空白 Rtrim(string) 去掉string右端空白 Len(string) 计算string长度 Left(string, x) 取str

    1,vba字符串函数列表:

    Trim(string)             去掉string左右两端空白

    Ltrim(string)            去掉string左端空白

    Rtrim(string)            去掉string右端空白

    Len(string)              计算string长度

    Left(string, x)          取string左段x个字符组成的字符串

    Right(string, x)         取string右段x个字符组成的字符串

    Mid(string, start,x)     取string从start位开始的x个字符组成的字符串

    Ucase(string)            转换为大写

    Lcase(string)            转换为小写

    Space(x)                 返回x个空白的字符串

    Asc(string)              返回一个 integer,代表字符串中首字母的字符代码

    Chr(charcode)           返回 string,其中包含有与指定的字符代码相关的字符

    2VBA转换函数列表:

    CBool(expression)        转换为Boolean型

    CByte(expression)        转换为Byte型

    CCur(expression)         转换为Currency型

    CDate(expression)      转换为Date型

    CDbl(expression)         转换为Double型

    CDec(expression)         转换为Decemal型

    CInt(expression)         转换为Integer型

    CLng(expression)         转换为Long型

    CSng(expression)         转换为Single型

    CStr(expression)         转换为String型

    CVar(expression)         转换为Variant型

    Val(string)             转换为数据型

    Str(number)              转换为String

    3,VBA时间函数:

    Now          返回一个 Variant (Date),根据计算机系统设置的日期和时间来指定日期和时间。

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

    Time         返回一个指明当前系统时间的 Variant (Date)。

    Timer        返回一个 Single,代表从午夜开始到现在经过的秒数。

    TimeSerial(hour, minute, second) 返回一个 Variant (Date),包含具有具体时、分、秒的时间。

    DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) 返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目

    Second(time) 返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一分钟之中的某个秒

    Minute(time) 返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一小时中的某分钟

    Hour(time) 返回一个 Variant (Integer),其值为 0 到 23 之间的整数,表示一天之中的某一钟点

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

    Month(date) 返回一个 Variant (Integer),其值为 1 到 12 之间的整数,表示一年中的某月

    Year(date) 返回 Variant (Integer),包含表示年份的整数。

    Weekday(date, [firstdayofweek]) 返回一个 Variant (Integer),包含一个整数,代表某个日期是星期几

    4,VBA获取文件列表:

    Dir[(pathname[, attributes])] ;pathname 可选参数,用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到 pathname,则会返回零长度字符串 (""); attributes 可选参数。常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配 pathname 但不包含属性的文件。

    5,VBA删除文件:

    Kill pathname 从磁盘中删除文件, pathname 参数是用来指定一个文件名

    RmDir pathname 从磁盘中删除删除目录,pathname 参数是用来指定一个文件夹

    6,用VBA打开文件:

    Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength] 能够对文件输入/输出 (I/O)。

    pathname 必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。

    mode 必要。关键字,指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。

    access 可选。关键字,说明打开的文件可以进行的操作,有 Read、Write、或 Read Write 操作。

    lock 可选。关键字,说明限定于其它进程打开的文件的操作,有 Shared、Lock Read、Lock Write、和 Lock Read Write 操作。

    filenumber 必要。一个有效的文件号,范围在 1 到 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。 reclength 可选。小于或等于 32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。

    说明 对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。如果 pathname 指定的文件不存在,那么,在用 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open 操作失败,而且会有错误发生。如果 mode 是 Binary 方式,则 Len 子句会被忽略掉。

    重要 在 Binary、Input 和 Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append 和 Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件

    7,VBA读入文件:

    Input #filenumber, varlist 从已打开的顺序文件中读出数据并将数据指定给变量

    Get [#]filenumber, [recnumber], varname将一个已打开的磁盘文件读入一个变量之中。

    8,写入文件:

    Write #filenumber, [outputlist] 将数据写入顺序文件

    Print #filenumber, [outputlist] 将格式化显示的数据写入顺序文件中

    Put [#]filenumber, [recnumber], varname 将一个变量的数据写入磁盘文件中。

    9,VBA关闭文件:

    Close [filenumberlist] 关闭 Open 语句所打开的输入/输出 (I/O) 文件

    注意 如果今后想用 Input # 语句读出文件的数据,就要用 Write # 语句而不用 Print # 语句将数据写入文件。因为在使用 Write # 时,将数据域分界就可确保每个数据域的完整性,因此可用 Input # 再将数据读出来。使用 Write # 还能确保任何地区的数据都被正确读出。Write 与 Print # 语句不同,当要将数据写入文件时,Write # 语句会在项目和用来标记字符串的引号之间插入逗号。Write # 语句在将 outputlist 中的最后一个字符写入文件后会插入一个新行字符,即回车换行符,(Chr(13) + Chr(10))

     

    展开全文
  • VBA函数定义及说明

    千次阅读 2020-06-24 11:18:28
    函数定义,函数返回对象,默认参数,不定长参数

    函数定义

    VBA定义的函数可以在工作表使用,如果是在加载插件中定义函数,本机所有打开工作簿都可以使用该函数,当然可以在过程sub中调用函数;

    VBA函数与sub过程不同的是,函数有返回内容;过程和函数都可以传入参数。
    函数使用Function关键字定义,定义规则如下:
    Function 函数名称(形参及类型)
    函数主体
    函数名称= 函数返回
    End Function
    示例:

    '定义一个数值平方的函数,形参:a,形参a类型:long,函数返回:a ^ 2;函数名称:test
    Function test(a as long)
    test = a ^ 2
    End Function
    
    '定义全局函数,使用public关键字,这个关键字跟变量定义是一致的。后面跟的as long是返回类型
    Public Function test(a as long) as long 
    test = a ^ 2
    End Function
    

    传值和传引用

    函数或方法传值使用关键字ByVal,传引用使用关键字ByRef

    Sub num_print()
    Dim i, num As Long  ' 定义一个变量
    num = 0
    For i = 1 To 10
        s = add(num)     ' 调用add函数s
        Debug.Print num     ' 函数参数是传引用,会依次打印1,2,3,,,,10
    Next
    End Sub
    
    Function add(ByRef a As Variant)
    a = a + 1
    End Function
    

    如果上述函数参数为传值ByVal,则函数不影响方法num_print中变量num的改变,全打印0;

    函数返回对象

    函数也可以返回对象,返回对象要使用set关键字;
    示例:返回字典

    Function aa()
    Dim d As Object
    
    Set d = CreateObject("scripting.dictionary")
    today = Date
    the_month_date = CDate(Year(Date) & "-" & Month(Date) & "-" & 20)   '这个月的20号
    last_month_date = Application.WorksheetFunction.EDate(the_month_date, -1)  '上个月的20号
    d("today") = today
    d("the_month_date") = the_month_date
    d("last_month_date") = last_month_date
    d("the_month") = Month(last_month_date)      '这个月
    d("last_month") =Month(Date)  '上个月
    
    Set aa = d    	'返回对象使用set关键字
    End Function
    
    '函数调用
    sub test1()
    dim d1 as object
    
    set d1 = aa()
    debug.print d1("today")    '打印字典键today对应的值
    end sub
    

    使用默认参数

    函数传入参数格式:形参 as 参数类型 = 参数默认值
    示例:正则提取函数

    Function regexp(rg As Variant, str As String, Optional mat As Byte = 0, Optional group As Variant = Empty)
    'Optional表示参数不是必需的关键字。如果使用了该选项,则参数表中该参数后的参数都必须是可选的,而且必须都使用 Optional 关键字声明。
    Dim re As Object
    Set re = CreateObject("vbscript.regexp")
        With re
            .Global = True
            .Pattern = str
            If re.test(rg) Then
                If group = Empty Then
                    regexp = re.Execute(rg)(mat)
                Else
                    regexp = re.Execute(rg)(mat).submatches(group)
                End If
            End If
        End With
    Set re = Nothing
    End Function
    

    使用不定长参数

    形参及类型固定写法:ParamArray 参数名称() As Variant(必须放在参数最后面)
    示例:只要有一个单元格为空,返回空字符串

    Function if_blank(goal_rg As Variant, ParamArray rngs() As Variant)
    Dim rg
    For Each rg In rngs
        If rg.Value = "" Then
            if_blank = ""
            Exit Function
        End If
    Next
    if_blank = goal_rg
    End Function
    

    示例:单元格求和sum

    Function rng_sum(ParamArray values() As Variant)
    Dim result As Variant      
    Dim val0 As Variant    ' for循环里的变量必须是变体型变量,否则会报错
    result = 0
    For Each val0 In values
        For Each val1 In val0
            result = result + val1
        Next
    Next
    rng_sum = result
    End Function
    
    '然后我们在工作表里写了这么一个函数
    =rng_sum(K21:L21,M22:N22,L23:N23)
    

    一些函数示例

    text_split:字符串分割

    EXCEL里面没有split函数,可以使用vba定义该函数,在工作表内使用

    Function text_split(str As String, sep As String, index As Long)
    ' 参数:str:被分割的字符串,sep:分隔符,index:分割后返回数组该索引的值,如果小于0返回数组
    ' 样例:text_split("abc,de,fg",",")(1)  返回:de
    
    If index >= 0 Then
        text_split = Split(str, sep)(index)
    Else
        text_split = Split(str, sep)
    End If
    End Function
    

    file_exists:判断文件是否存在

    判断文件是否存在,dir函数可以使用通配符:*

    Function file_exists(full_name As String) As Boolean
    file_exists = (Dir(full_name) <> "")
    End Function
    

    basename:路径提取文件名

    传入一个带路径完整的文件名,返回文件名,比如:test.xlsx

    Function basename(full_name)
    ' Application.PathSeparator:反斜杠
    ' basename("d:/filedir/text.xlsx"),返回:text.xlsx
    Dim arr As Variant
    arr = Split(full_name, Application.PathSeparator)
    basename = arr(UBound(arr))
    End Function
    

    sheet_exists:工作表是否存在

    Function sheet_exists(sheet_name As Variant) As Boolean
    ' 传入工作表名称,返回是否存在:boolean
    ' sheet_exists("工作表2")
    Dim st As Object
    On Error Resume Next
    Set st = ActiveWorkbook.Sheets(sheet_name)
    If Err.Number = 0 Then   ' 如果没有报错,返回true
        sheet_exists = True
    Else
        sheet_exists = False
    End If
    

    workbook_is_open:工作表是否存在

    Function workbook_is_open(wb_name As Variant) As Boolean
    ' 传入工作簿名称,返回是否打开:boolean
    ' sheet_exists("工作表2")
    Dim st As Object
    On Error Resume Next
    Set st = Workbooks(wb_name)
    If Err.Number = 0 Then   ' 如果没有报错,返回true
        workbook_is_open = True
    Else
        workbook_is_open = False
    End If
    

    text_join:split的反函数

    该函数在Excel2019版已经引入,早期的版本可以通过自定义函数实现

    Function text_join(sep As String, is_skip_blank As Boolean, ParamArray ranges() As Variant)
    ' sep:分隔符,is_skip_blank:是否跳过空值,ranges:数组
    Dim rngs, sub_rng As Variant
    Dim s As String
    s = ""
    For Each rngs In ranges
        For Each sub_rng In rngs
            If is_skip_blank = True Then   ' 是否跳过空格
                If Len(sub_rng) > 0 Then
                    s = s & sep & Rng
                End If
            Else
                s = s & sep & Rng
            End If
        Next
    Next
    text_join = Replace(s, sep, "", 1, 1)     ' 把开头的分隔符去掉
    End Function
    

    ifs:多判断

    该函数在excel2019版本后才有,早期的版本可以在vba中定制;无须重复if嵌套

    Function udf_ifs(ParamArray args() As Variant)
    Dim i As Byte
    Dim args_len As Byte
    
    args_len = UBound(args)   ' 参数索引下标从0开始
    If args_len < 1 Then Exit Function
    
    For i = 0 To UBound(args) Step 2
        If args(i) = True Then
            udf_ifs = args(i + 1)   ' 如果参数是true,返回后面一个参数值
            Exit Function
        End If
    Next
    
    ' 如果都没有是,参数个数是基数,返回最后一个参数
    If args_len Mod 2 = 0 Then udf_ifs = args(args_len): Exit Function
    
    udf_ifs = "#N/A"      ' 参数是偶数,且没有true对象,返回错误值
    End Function
    

    range_workbook_name:返回单元格所在的工作簿名称

    返回单元格所在工作簿的名称,parent表示父对象,比如单元格的父对象是工作表,工作表的父对象是工作簿,这里调用了两次

    Function range_workbook_name(rng As Variant) As String
    range_workbook_name = rng.Parent.Parent.Name
    End Function
    

    text_speak:说出文本

    使用的是Excel的文本转化成语音的转化生成器,讲述传入的字符串

    Function text_speak(text)
    ' Application.Speech.Speak ("hello alice")
    Application.Speech.Speak (text)
    text_speak = text
    End Function
    

    is_like:模式匹配

    使用vba的like函数,类似于sql中的like,like中pattern参数的字符

    pattern字符解释
    任意单个字符
    *0个或多个字符
    #任意单个数字(0-9)
    [charlist]字符列表中的任意单个字符
    [!charlist]不在字符列表中的任意单个字符
    Function is_like(str As String, pattern As String) As Boolean
    is_like = str Like pat
    End Function
    
    展开全文
  • 工作表函数和VBA函数及常量大全 函数 VBA 常量 office

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,838
精华内容 7,535
关键字:

vba函数大全