传参数随心所欲不逾矩 消息框暗藏高招有神通
主要内容:
一、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