我对此VBA Excel代码有疑问: =如果A3不存在,区域(A2,A3)不会返回任何值。
Function Area(Length, Optional Width)
If IsMissing(Width) Then
Area = Length * Length
Else
Area = Length * Width
End If
End Function
答案 0 :(得分:3)
你在混淆IsMissing和IsEmpty。
如果没有任何内容传递给函数,例如:= Area(A1),则Width将缺失。
但是你要在函数中传递一个参数,其中B1不包含任何内容:= Area(A1,B1),那么Width将为Empty,而不是Missing。
处理这两种情况:
If IsMissing(Width) Or IsEmpty(Width) Then
Area = Length * Length
Else
Area = Length * Width
End If
答案 1 :(得分:0)
IsMissing不适用于简单的数据类型(例如Integer或Double),因为与Variants不同,它们没有为"缺失"提供服务。标志位。因此,类型化可选参数的语法允许您指定默认值。如果在调用过程时省略了参数,则参数将具有此默认值,如下例所示:
也许这会有所帮助:
Function Area(Length, Optional Width as String = "missing")
If Width = "missing" Then
Area = Length * Length
Else
Area = Length * Width
End If
End Function
自: http://office.microsoft.com/en-in/access-help/ismissing-function-HA001228866.aspx