精华内容
下载资源
问答
  • VBA-API函数大全

    2018-05-09 23:11:25
    vba windows api函数大全,对用vba的同学们很有帮助 可以作为手册查询
  • 《 ExcelVBA 编程入门范例》主要是以一些基础而简短的 VBA 实例来对 ExcelV BA 中的常用对象及其属性和方法进行讲解, 包括应用程序对象、 窗口、 工作簿、 工作表、 单元格和单元格区域、 图表、 数据透视表、 形状...
  • VBA自定义函数. 6个简单而有用的VBA自定义函数.
  • Excel VBA 函数返回值

    千次阅读 2020-02-11 13:29:52
    Excel VBA 函数返回值 Sub 定义一个过程 VB的函数定义格式与C有很大区别: 格式: Sub 过程名(参数列表 ... ) 过程体 End Sub Function 定义一个函数 官方文档 ???? Microsoft Docs | 编写 Function 过程 Function...

    Excel VBA 函数返回值

    Sub 定义一个过程

    VB的函数定义格式与C有很大区别:
    格式:

    Sub 过程名(参数列表 ... )
    	过程体
    End Sub
    

    Function 定义一个函数

    官方文档 🚀 Microsoft Docs | 编写 Function 过程

    Function 函数名(参数列表 ... )
    	函数体
    	函数名 = 返回值
    End Function
    

    实例代码

    Sub Main() 
     temp = Application.InputBox(Prompt:= _ 
     "Please enter the temperature in degrees F.", Type:=1) 
     MsgBox "The temperature is " & Celsius(temp) & " degrees C." 
    End Sub 
     
    Function Celsius(fDegrees) 
     Celsius = (fDegrees - 32) * 5 / 9 
    End Function
    

    调用Sub过程或者Function函数

    调用函数时,有两种形式:

    1. 可以直接将参数放在函数名后,英文逗号 ‘,’ 作为参数分隔符,不需要加圆括号。
      此种调用方式,将舍弃函数返回值。
    Sub Main() 
     MultiBeep 56 
     Message 
    End Sub 
     
    Sub MultiBeep(numbeeps) 
     For counter = 1 To numbeeps 
     Beep 
     Next counter 
    End Sub 
     
    Sub Message() 
     MsgBox "Time to take a break!" 
    End Sub
    
    1. 使用类c语言的方式,参数后加圆括号,用以包含参数。
    Sub Main() 
     Answer3 = MsgBox("Are you happy with your salary?", 4, "Question 3") 
     HouseCalc 99800, 43100 
     Call HouseCalc(380950, 49500) 
    End Sub 
     
    Sub HouseCalc(price As Single, wage As Single) 
     If 2.5 * wage <= 0.8 * price Then 
     MsgBox "You cannot afford this house." 
     Else 
     MsgBox "This house is affordable." 
     End If 
    End Sub
    
    1. 函数名前,可加Call关键字,亦可省略。

    References:

    Microsoft Docs | Calling Sub and Function procedures

    展开全文
  • EXCel VBA 经典应用例子

    2018-03-14 08:48:26
    EXCel VBA 经典应用例子,通过具体的例子展现VBA的功能。
  • 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

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

    展开全文
  • excel VBA 自定义函数的使用

    千次阅读 2019-06-14 15:18:39
    自定义的函数要放在模块内才能被使用 放在模块中使用才会出现自动补齐

    自定义的函数要放在模块内才能被使用
    在这里插入图片描述
    在这里插入图片描述

    放在模块中使用才会出现自动补齐
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • EXCEL函数公式解惑专贴.CHM+Excel函数速查.chm+VBA入门参考手册.chm+实例xls文件,打包上传,入门学习的好资料。
  • '带有一个参数的函数 Function CAL(a) As Double Select Case a Case Is > 100: CAL = 100 Case 55 To 100 CAL = 55 Case Else CAL = 0 End Select End Function '带1个参数写1个,带2个写2个,多个的话...

    想说的都写在批注了,就不多写了。

    '带有一个参数的函数
    Function CAL(a) As Double
        Select Case a
            Case Is > 100:
                CAL = 100
            Case 55 To 100
                CAL = 55
            Case Else
                CAL = 0
        End Select
    End Function
    
    '带1个参数写1个,带2个写2个,多个的话可以选择数组
    '函数过程主要是在单元格用,意味着经常一框,不晓得多少个参数,怎么处理?
    '用数组作为参数
    '经过测试,类似=SUMARRAY(A4:D4)可以运行,但是=SUMARRAY(A4,B4,C4,D4)无法计算
    
    Function SUMARRAY(list) As Double
        '未明确是啥类型就用Variant
        Dim Item As Variant
        SUMARRAY = 0
        For Each Item In list
            '是数字就加总
            If WorksheetFunction.IsNumber(Item) Then
                SUMARRAY = SUMARRAY + Item
            End If
        Next Item
    End Function
    Sub MakeList()
        Dim nums(1 To 100) As Double
        Dim i As Integer
        For i = 1 To 100
            '随机赋值1-100的值到nums数组的各个元素
            nums(i) = Rnd * 100
        Next i
        MsgBox SUMARRAY(nums)
    End Sub
    
    '部分函数带可选参数,可选参数怎么实现呢?
    '在参数名前面加上Optional就是可选参数啦!
    '假设实现一个返回大小写功能的函数,不写参数全大写,可选参数填了则全小写
    
    
    Function UPORLOW(cell As Variant, Optional UpperCase As Variant)
        'cell是必须提供的参数,用IsMissing判断是否提供了后面的UpperCse参数
        
        If IsMissing(UpperCase) Then
            UPORLOW = UCase(cell)
        Else
            UPORLOW = LCase(cell)
        End If
            
    End Function
    
    '参数传入1.固定数量参数;2.数组;3.可选参数
    '问题:怎么输出数组
    
    Function WEEKTOTAL()
        WEEKTOTAL = Array("周一", "周二", "周三", "周四", "周五", "周六", "周日")
        '使用方法
        '1.框柱不能多于数组数量的单元格(多了的会显示错误值,还不能单独删除)
        '2.把=WEEKTOTAL输入到单元格中,然后注意不要就按回车键哈,是按Ctrl+Shift+Enter三个一起
        '3.数组输出的值在单元格只会横着排
    End Function
    
    '怎么实现想横着就横着想竖着就竖着的数组排列呢?
    '和之前一样,传入一个可选参数,这里简单点,随便穿了参数就当做竖着排列好了
    Function WEEKTOTALPLUS(Optional arg As Variant)
        '基本流程就是1.没参数,不管了;有参数,横着排
        Dim weeks As Variant
        '不能Dim weeks(7) as String ,然后weeks =arry(7个值)这样操作
        weeks = Array("周一", "周二", "周三", "周四", "周五", "周六", "周日")
        '还是用IsMissing判断有没有参数
        If IsMissing(arg) Then
            WEEKTOTALPLUS = weeks
        Else
            '有参数了,就变成竖的往下排列,用系统的转置函数
            WEEKTOTALPLUS = Application.Transpose(weeks)
        End If
    End Function
    
    '刚才例子SUMARRAY在输入=SUMARRAY(A4:D4)可以运行,但输入=SUMARRAY(A4,B4,C4,D4)无法计算
    '不定数量的参数的处理办法:使用数组作为最后一个参数,加上关键字PrarmArray
    
    Function SUMPLUS(ParamArray arglist() As Variant) As Double
        Dim arg As Variant
        For Each arg In arglist
            SUMPLUS = SUMPLUS + arg
        Next arg
        '这个时候输入=SUMARRAY(A4,B4,C4,D4)等等多个参数可以计算
        '但是输入=SUMARRAY(A4:D4)又可以运行,后面完善类似SUM的功能
    End Function
    

     

    展开全文
  • VBA SPLIT函数详解

    万次阅读 多人点赞 2019-01-31 13:25:26
    VBA编程是经常会用到字符串拆分函数SPLIT,用法也不复杂,但是大家对于这个函数的参数未必完全了解,下面结合示例讲解一下参数的用法。 SPLIT函数的语法格式如下: Split(expression, [ delimiter, [ limit, [ ...
  • VBA函数

    2021-05-15 12:35:46
    文章目录VBA的函数excel函数对应的vba函数countavlookupexcel特有函数和vba特有函数vba 字符串函数instrsplitvba 常用函数错误处理控制输入的格式自己写函数带参数的sub代码复用 没完成的任务:张三李四登录p=8 VBA...
  • 实例需求:对于VBA代码实现的自定义函数,希望只能在VBA过程中被调用,而在工作表单元格的公式使用此自定义函数。 为啥存在这么奇葩的应用场景呢,其实我也不知道,只能认为存在的就是合理的。 通常VBA自定义函数...
  • 上一篇文章已经学习了Instr()函数,InStrRev()函数正好与Instr()函数相反,查找的方向是相反的。Instr()的查找方向是从左到右,而InStrRev()函数的方向是从右到左。 语法 InStrRev(string1, string2 [,start, ...
  • Excel_vba函数大全

    2010-07-15 10:04:17
    Excel_vba函数大全:而且里边有例子,相信对你一定有用。
  • VBA:MsgBox函数

    2020-01-13 12:01:26
    MsgBox 函数 在对话框中显示消息,等待用户单击按钮,并返回一个 Integer 告诉用户单击哪一个按钮。 语法 MsgBox(prompt[, buttons] [, title] [, helpfile, context]) MsgBox 函数的语法具有以下几个命名参数:...
  • VBA之使用自定义函数

    千次阅读 2020-03-29 19:33:20
    如何在vba中使用自定义的函数呢? 首先在模块里定义好函数,然后注意要往里面传参 然后在excel单元格里调用该函数 1.需求1,判断性别 代码如下 Function zmj(x) zmj = (x / 6.03) - x * 0.03 End Function Function ...
  • 一EXCEL和VBA的3种函数 1.1 EXCEL和VBA VBA是寄生在EXCEL里的 VBA有自己的原生函数 VBA. VBA的Application===EXCEL,...1.2.1 第1类: VBA函数 VBA的函数: VBA内置函数,用户自定义函数: 写法可以省略vba. ...
  • 绝对物有所值哈,经典常用的VBA实例,自定义函数,系统函数
  • ExcelVBA之传递函数

    2020-06-04 19:46:08
    函数调用: Sub EnterText() Dim m As String, n As String, r As String m = InputBox("Enter your first name:") n = InputBox("Enter your last name:") r = JoinText(m, n) MsgBox r End Sub Function ...
  • 【Excel VBA】在VBA中调用函数

    万次阅读 2019-03-23 11:10:15
    EXCEL的表函数也可以直接在VBA中直接调用执行,具体调用格式如下: 调用方法1:变量对象= Application.WorksheetFunction.表函数(表函数参数) 实例:Range("d8") = Application.WorksheetFunction.CountIf(Range...
  • 今天的文章真的厉害了,我们都知道excel有很多强大的函数。比如sum,count,if非常的好用。那我们能不能自己定义函数来使用呢! 当然可以,下面我们就来定义函数并且使用它。 案例一: 提取身份证中的生日,如下图...
  • 我们在利用excel表格统计数据时,常常需要使用各种excel自带的公式( 使用方法: =函数名(参数…)),下面将简单介绍下我们常使用到的几种方法。 MIN函数:找到某区域中的最小值 MAX函数:找到某区域中的最大值 ...
  • EXCEL函数 大集合(含VBA),100多个例子,肯定有你需要的,值得下载!
  • VBA Find函数的常见用法

    万次阅读 2018-05-04 21:47:26
    学习杨老师的全民一起vba课程内容整理:Find语法: Range.Find(What,After,LookIn,LookAt,SearchOrder,SearchDirection,MatchCase,MatchByte,SearchFormat)()What:唯一一个必选参数,含义为需要查询的内容,...
  • vba与SAP-RFC接口调用实例。通过VBA程序实例,介绍了利用Excel的VBA宏程序,调用SAP系统的RFC远程函数接口,实现外部数据与SAP系统的交互
  • 数字排序的方法有很多,最简单的方式可能就是下面两种方法了。 =SMALL($G29:29:29:G37,1*ROW(A1)-1+COLUMN(A1)) =SMALL(G29:G37,ROW(A1:A9)) 这两行代码虽然都是用了SMALL函数,原理也是一样的,但是实用性还是有很...
  • VBA实例代码

    2019-04-06 09:29:16
    MVC,模板引擎,函数式编程... 这种 无意的"留白" 给了VBA程序员无限的创作空间。另外,在实践中总结与思考也必不可少,通过自动化项目归纳各项目之间内在的统一模式, 提炼与精减代码也是学习的重要一环。
  • VBA调用dll实例

    2010-08-12 18:58:37
    VBA调用dll是指定路径的,如果该路径下没有想调的dll怎么办,本文给出了一个解决方法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,821
精华内容 1,928
关键字:

vba函数简单实例