2014-10-30 2 views
1

Раньше у меня были массивы, определенные как Array = «Range». Из-за возникших проблем, я переопределил свои массивы как объединение из двух столбцов. К сожалению, синтаксис Ubound (Array, dimension) теперь выдает ошибку. Если кто-то может объяснить, как синтаксис работает с моим новым определением, это было бы высоко оценено.синтаксис Ubound (Array), где array является диапазоном диапазонов

Это код для определения массивов:

Sub define_array_5(Array_1) 

    Dim wsh As Worksheet 

    Dim range1 As Range 
    Dim range2 As Range 
    Dim finalrange As Range 

    Dim a As Integer 
    Dim finalrow As Integer 

    ' define array 

    finalrow = Range("a1").End(xlDown).row 

    Set range1 = Range(Cells(1, 1), Cells(finalrow, 1)) 
    Set range2 = Range(Cells(1, 5), Cells(finalrow, 5)) 
    Set finalrange = Union(range1, range2) 

    ReDim Array_1(1 To finalrange.Areas.Count) 

    For a = 1 To finalrange.Areas.Count 
    Array_1(a) = finalrange.Areas(a) 
    Next 

End Sub 

Я понял, что, например, что было array_1 (3, 2) в старом определении теперь array_1 (2) (3 , 1), но синтаксис для Ubound ускользает от меня.

ответ

1

То, что вы просите, не имеет смысла в вашем примере.

Вы явно определяете Array_1 как единый размерный массив областей, каждый из которых имеет верхние границы.

'this dimensions it as a 1-D array 
ReDim Array_1(1 To finalrange.Areas.Count) 

Я думаю, что вы ищете выглядит следующим образом:

For a = 1 To finalrange.Areas.Count 
    Array_1(a) = finalrange.Areas(a) 
    'this is what I think you are trying to do 
    Debug.Print UBound(Array_1(a)) 

Next 

Это дает верхнюю границу элемента массива a вашего массива 1-D.

+0

спасибо, все. – Kaz

+0

@ Zak, пожалуйста, рад, что он работает. – enderland

+1

@ Zak не забывайте принимать ответы, которые решают ваши проблемы :) –

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