У меня есть пользовательский тип, как показано ниже,вызов функции возвращать массив - несоответствие типов
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
Я получаю ошибку времени выполнения несоответствия типа на линии Поля = FindFactorColumns (rsTS, wsTS) - Я не под почему же?
Объявление вашей функции неверно - вы хотите 'wsTS As Worksheet', а не' wsTS As Worksheets' – Rory
Спасибо! Я задавался вопросом, почему это не работало долгое время, но явно недостаточно близко! – mHelpMe
В качестве программиста одной из самых сложных вещей часто является то, что вы на самом деле писали, а не то, что, по вашему мнению, вы написали. ;) – Rory