2016-03-31 2 views
1

Я новичок в VBA, когда я исполняю ниже функции, я получаю «Невозможно присвоить массив» Ошибка компиляции«Невозможно присвоить массив» компилировать ошибки

Function GetPriorities() As String() 

    Dim wksMapping As Worksheet 
    Dim LastRowMapping As Long 
    Dim cnt As Long 
    Dim cntIndex As Long 

    cntIndex = 0 
    LastRowMapping = Worksheets(MAPPING).Cells(Worksheets(MAPPING).Rows.Count, "A").End(xlUp).Row 
ReDim arrHighPriority(LastRowMapping - 2) 

    For cnt = 2 To LastRowMapping 
     arrHighPriority(cntIndex) = Worksheets(MAPPING).Cells(cnt, 2).Value 
     cntIndex = cntIndex + 1 
    Next cnt 

    GetPriorities = arrHighPriority 

End Function 

Мое требование, чтобы позвонить выше функцию и назначить массив, возвращаемый функцией, переменной.

Мой код для вызова выше функции

Dim x() As String  
x = GetPriorities 

ответ

0

Вы должны объявить массив, чтобы он мог соответствовать возвращаемый тип:

Function GetPriorities() As String() 

    Dim wksMapping As Worksheet 
    Dim arrHighPriority() As String 

    ... 

    GetPriorities = arrHighPriority 

End Function 
+0

ОК, так что в моем случае, это должно быть ReDim arrHighPriority (LastRowMapping - 2) в виде строки. правильно ? – refactor

+0

Нет необходимости, как только будет объявлено, что его нельзя изменить с помощью redim. –

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