Excel VBA:是否可以使用自定义方法创build自定义函数?

我指的是,例如,你可以做什么:

Range().Select 

其中“范围()”是function,“select”是方法。

例如,如果我有一个函数,我想要三个代表三angular形的边长的双打,并以弧度或弧度吐出最大的angular度。

 Public Function getAngle(a as Double, b as Double, c as Double) .degrees = 'some equation to determine degrees as a double .rads = 'some equation to determine radians as a string End Function 

因此,你会得到以下结果:

getAngle(3,4,5).degrees:90.0

getAngle(3,4,5).rads:“0.5π”

创build一个类,这个例子命名为clsTrig。

 Option Explicit '/ Class Name : clsTrig Private m_ddegrees As Double Private m_drads As Double Public Property Get degrees() As Double degrees = m_ddegrees End Property Public Property Let degrees(val As Double) m_ddegrees = val End Property Public Property Get rads() As Double rads = m_drads End Property Public Property Let rads(val As Double) m_drads = val End Property Public Function doCalc(a1 As Double, a2 As Double) As Double '/ You do the math here. This is just a sample and not actual trigonometery m_ddegrees = a1 + a2 m_drads = a1 - a2 End Function 

然后在标准模块中,你得到你想要的行为,像这样:

 Public Function getAngle(a As Double, b As Double) As clsTrig Dim oTrig As New clsTrig Call oTrig.doCalc(a, b) Set getAngle = oTrig End Function Sub test() MsgBox getAngle(30, 20).degrees MsgBox getAngle(30, 20).rads End Sub 

使用types:

 Option Explicit Type cType Degrees As Double rads As Double End Type Sub tester() Dim a As cType a = getAngle(1, 2, 3) Debug.Print a.Degrees, a.rads End Sub Public Function getAngle(a As Double, b As Double, c As Double) As cType Dim rv As cType rv.Degrees = 88 'for example rv.rads = 99 'for example getAngle = rv End Function