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
可以像这样在电子表格中使用: