2015-06-04 3 views
0

У меня есть пользовательский тип, как показано ниже,вызов функции возвращать массив - несоответствие типов

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) - Я не под почему же?

+1

Объявление вашей функции неверно - вы хотите 'wsTS As Worksheet', а не' wsTS As Worksheets' – Rory

+1

Спасибо! Я задавался вопросом, почему это не работало долгое время, но явно недостаточно близко! – mHelpMe

+0

В качестве программиста одной из самых сложных вещей часто является то, что вы на самом деле писали, а не то, что, по вашему мнению, вы написали. ;) – Rory

ответ

0

Только записывая это, чтобы сохранить время @Rory, это его ответ.

Несоответствие типа произошло потому, что wsTS, который был сохранен как один рабочий лист в Subult Worksheet Sub, был объявлен как несколько рабочих листов в функции FindFactorColumn.

Поскольку строка ошибки возникла при вызове функции, @Rory смог определить несоответствие типа, посмотрев тип переменных, используемых в функции, и сравнил их с типом тех же переменных при сохранении в Sub ,

Смежные вопросы