Vba 调用函数以返回数组类型不匹配

Vba 调用函数以返回数组类型不匹配,vba,excel,Vba,Excel,我有一个自定义类型,如下所示 Public Type TypeFieldColumn iCol As Integer dRow As Double End Type 然后我有以下子程序 Private Sub PopulateWorksheet() Dim wsTS As Worksheet Dim clsData As New clsDatabase Dim rsTS As New ADODB.Recordset Dim Fields() As TypeFieldColum

我有一个自定义类型,如下所示

Public Type TypeFieldColumn
    iCol As Integer
    dRow As Double
End Type
然后我有以下子程序

Private Sub PopulateWorksheet()

Dim wsTS As Worksheet
Dim clsData As New clsDatabase
Dim rsTS As New ADODB.Recordset
Dim Fields() As TypeFieldColumn

Set wsTS = ThisWorkbook.Sheets(SomeName)
Set rsTS = clsData.SomeMethod()

Fields = FindFactorColumns(rsTS, wsTS)

End Sub
哪个调用下面的函数

Private Function FindFactorColumns(rsTS As ADODB.Recordset, wsTS As Worksheets) As TypeFieldColumn()

Dim i As Integer
Dim index As Integer
Dim FactorName As String
Dim Flds() As TypeFieldColumn

ReDim Flds(1 To rsTS.Fields.Count - 1)

For i = 1 To rsTS.Fields.Count - 1                      
    FactorName = rsTS.Fields(i).Name
    index = MapBloombergIndexToFactorName(FactorName)
    If index > 0 Then FactorName = pMap(index).MapName

    Flds(i).iCol = Application.WorksheetFunction.Match(FactorName, wsTS.Range("1:1"), 0)
 Next

 FindFactorColumns = Flds

 End Function

我在Fields=FindFactorColumns(rsTS,wsTS)行中得到了一个类型不匹配的运行时错误-我不明白为什么?

写这个只是为了节省@Rory时间,这是他的答案

发生类型不匹配的原因是,在“填充工作表”子菜单中保存为单个工作表的wsTS在FindFactoryColumn函数中声明为多个工作表


因为在函数调用时出现了错误行,@Rory能够通过查看函数中使用的变量类型并将其与保存在Sub中时相同变量的类型进行比较来确定类型不匹配。

您的函数声明是错误的-您希望
wsTS作为工作表
,而不是
wsTS作为工作表
谢谢!我想知道为什么这不起作用,我花了很长时间寻找,但显然不够近!作为一名程序员,最困难的事情之一往往是看到你实际上写了什么,而不是你认为你写了什么嘿@Rory,如果你不打算回答,我会从你的评论中写些东西作为回答。