全民一起VBA提高篇-第十八回

2020-04-08  本文已影响0人  凯凯凯王

传参数随心所欲不逾矩 消息框暗藏高招有神通

主要内容:

一、Merge使用的区别

Sub 合并单元格的区别()

  Range("B5:D9").Merge  '合并所有单元格

    Range("B10:D13").Merge True  ‘按行合并

End Sub

二、可选参数Optional

(1)按行求积,按列求和程序

Function Asum(r As Range)

    Dim a As Long, b As Long, c As Long, s As Long

    s = 0

    For a = 1 To r.Rows.Count

    c = 1

        For b = 1 To r.Columns.Count

      c = c * r.Cells(a, b)

      Next b

      s = s + c

    Next a

    Asum = s

End Function

(2)按行按列选择

Function CaSum(r As Range, useColumn As Boolean)

    Dim a&, b&, s&, k&

    s = 0

    If useColumn Then

        For b = 1 To r.Columns.Count

        k = 1

            For a = 1 To r.Rows.Count

            k = k * r.Cells(a, b)

            Next a

            s = s + k

        Next b

    Else

        For a = 1 To r.Rows.Count

        k = 1

            For b = 1 To r.Columns.Count

            k = k * r.Cells(a, b)

            Next b

            s = s + k

        Next

    End If

    CaSum = s

End Function

提示1:以上程序必须在CaSum函数的第二个参数输入True或者False

提示2:将第二个参数改为Option useColumn As Boolean =False.Optional是VBA中的关键字,代表可选项,允许忽略。把它放在一个参数前面,这个参数就变成了可选项。

提示3:False代表默认值,意思是在输入时,若未提供参数,则默认为False。

三、Ismissing(a)

(1)判断一个可选参数a是否被提供,如果没有提供,则返回True(即Missing);否则返回False。

(2)要求:该可选参数必须是变体型,且不能有默认值。

Sub calldemo()

    Dim x, y

    x = myFunction(7)

    y = myFunction(1, 3)

    MsgBox "x是" & x & ",y是" & y

End Sub

Function myFunction(a, Optional b)

    If IsMissing(b) Then

        myFunction = a * 2

    Else

        myFunction = (a + b) * b

    End If

End Function

四。传递参数的方法:

使用:=可以按参数名称传递参数,比如x=myFunction(a:=3,c:=5)

而且可以不必要按照顺序去传递参数。

Sub calld()

    Dim x

    x = myfun(3)

    x = myfun(3, 4)

    x = myfun(3, 4, 5)

    x = myfun(3, , 5)

End Sub

    Function myfun(a, Optional b = 0, Optional c = 0)

        myfun = a + b - c

    End Function

上一篇 下一篇

猜你喜欢

热点阅读