2015-05-08 3 views
0

Я написал следующую процедуру, каждый раз, когда я пытаюсь запустить ее, компиляция говорит, что Data - неправильный тип данных. ChooseLineItem принимает диапазон в качестве параметра, и, как вы можете видеть, Data не является диапазоном, тогда ChooseLineItem не будет выполнен.Компилятор жалуется на неправильный тип данных

Итак, мой вопрос заключается в том, как получить этот код для компиляции?

FYI Причина, почему Data является decared как вариант, потому что он должен быть способен принимать диапазоны и массивы.

ответ

3

Попробуйте это:

Public Function MakeKeyValPairs(Data As Variant) As Variant() 
     Dim LineItem As Integer, Headers As KeyValStruct, r as Range 

     If TypeName(Data) = "Range" Then 
     Set r = Data 
     LineItem = ChooseLineItem(r) 
    Else 
     LineItem = 1 
    End If 
    Headers = FindHeaders(Data) 

    MakeKeyValPairs = AssembleAray(Data, Headers, LineItem) 
End Function 
+0

Похоже, что работал, спасибо! Мне просто нужно подождать, пока Stack Overflow не позволит мне принять ответ. В среднем, в то время как глупый вопрос, нет никакого способа, чтобы 'r' Range каким-то образом перезаписывал данные в моей таблице? Предполагая, что мои коды остаются такими, какие вы предлагали. – sgp667

+0

Нет проблем. Нет переменной ** r ** - это просто ссылка на ваш вариант данных. Поэтому ничто не должно испортить/перезаписать ваши данные. Проблема заключается только в компиляции, а не во время выполнения –

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