Particular custom function.

  • Thread starter Thread starter y
  • Start date Start date
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.
 
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top