VBA:从Excel单元格返回一个types的字段

我有一个VBA函数返回一个Type:

Public Type Person_t Name As String Age As Integer End Type 

function签名如下:

 Public Function GetPerson(Name As String) as Person_t ... GetPerson = result End Function 

正如你所看到的,这个函数的返回types是Person_t。

我想要做的就是从excell表格中调用这个函数,更具体地说,获取Person_t的Name字段。 这样的事情我期望:

= GetPerson( “弗雷德”)。名称

但这当然是一个错误。 什么是正确的方法?

@tigeravatar提出了一个很好的观点。 可能比试图在UDF中使用自定义数据types更简单。 但是,假设你有一个很好的理由这样做,你可以写一个这样的访问函数:

 Function GetPersonData(Name As String, field As String) As Variant Dim p As Person_t Dim s As String p = GetPerson(Name) s = LCase(Trim(field)) Select Case s Case "name": GetPersonData = p.Name Case "age": GetPersonData = p.Age Case Else: GetPersonData = CVErr(xlErrValue) End Select End Function 

一个testing目的的存根:

 Public Function GetPerson(Name As String) As Person_t If Name = "Fred" Then GetPerson.Name = "Fred Flinstone" GetPerson.Age = 50 Else GetPerson.Name = "John Doe" GetPerson.Age = 18 End If End Function 

可以像这样在电子表格中使用:

在这里输入图像说明