Particular custom function.

Y

y

Does VBA allow declaration of function which the user doesn't specify all the parameters for?

Example:
Area("Triangle",sideA,sideB,sideC)
Area("Rectangle",sideA,sideB) OR Area("Rectangle",sideA,sideB;)
Area("Square",side) OR Area("Square",side;;)

Thanks, Alex.
 
J

JE McGimpsey

One way:

Public Function Area(sShapeType As String, _
ParamArray vSides() As Variant) As Double
Select Case LCase(sShapeType)
Case "triangle"
If UBound(vSides) <> 1 Then
Area = CVErr(xlErrValue)
Else
Area = CDbl(vSides(0)) * CDbl(vSides(1)) / 2#
End If
Case "square"
If UBound(vSides) <> 0 Then
Area = CVErr(xlErrValue)
Else
Area = CDbl(vSides(0)) ^ 2
End If
Case "rectangle"
If UBound(vSides) <> 1 Then
Area = CVErr(xlErrValue)
Else
Area = CDbl(vSides(0)) * CDbl(vSides(1))
End If
Case "circle"
If UBound(vSides) <> 0 Then
Area = CVErr(xlErrValue)
Else
Area = Application.Pi * vSides(0) ^ 2
End If
Case Else
Area = CVErr(xlErrValue)
End Select
End Function
 
Top