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,如果你不打算回答,我会从你的评论中写些东西作为回答。