Страницы: 1
RSS
VBA Значение единственной ячейки передать в двумерный массив размером 1*1
 
Доброго времени суток всем!!!
При передаче значений из динамического диапазона в массив возникает проблема, когда диапазон становится одной ячейкой.
Код
Sub test()
    Dim arr()
    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    ReDim arr(1 To lLastRow, 1 To 1)
    arr = Range(Cells(1, 1), Cells(lLastRow, 1)).Value
End Sub

То есть при количестве строк больше 1 все работает, а если строка одна, то диапазон из одной ячейки никак не хочет запихиваться в массив размерностью 1*1.

Как прикрутить костыль я знаю, но мне хотелось бы чуть больше узнать возможности преобразования ячейки в диапазон (если таковое решение имеется).

Заранее благодарю за помощь.

 
Я делаю так:
Код
Sub test()
    Dim arr(), lLastRow&
    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    If lLastRow = 1 Then
        ReDim arr(1 To 1, 1 To 1)
        arr(1, 1) = Cells(1, 1)
    Else
        arr = Range(Cells(1, 1), Cells(lLastRow, 1)).Value
    End If
End Sub
Изменено: Hugo - 08.05.2020 15:02:53
 
Мне больше глянется так
Код
Sub test()
    Dim arr, lLastRow&
    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    arr = Range(Cells(1, 1), Cells(lLastRow, 1)).Value
    If Not IsArray(arr) Then
        ReDim arr(1 To 1, 1 To 1)
        arr(1, 1) = Range(Cells(1, 1), Cells(lLastRow, 1)).Value
    End If
End Sub
 
Сергей Беляев, Сергей Беляев, здравствуйте!
Проверенный код на примере формирования одномерного массива из любого диапазона
Изменено: Jack Famous - 08.05.2020 15:25:41
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Можно вместо свойства Value использовать такую функцию:

Код
' Возвращает значение свойства r.Value как массив
Function ToArray(ByVal r As Range)
   Dim arr(1 To 1, 1 To 1), res
   res = r.Value
   If IsArray(res) Then
     ToArray = res
   Else
     arr(1, 1) = res
     ToArray = arr
   End If
End Function
Изменено: sokol92 - 08.05.2020 15:43:50
Владимир
 
Цитата
sokol92: Можно вместо свойства Value использовать такую функцию:
это ж как у меня  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Огромное спасибо всем откликнувшимся за помощь!!!
 
Цитата
Jack Famous написал:
это ж как у меня
У меня строк меньше. :D  
Владимир
 
Цитата
sokol92: У меня строк меньше
это потому что у вас только функция, а не весь код  :)
Вот так полностью
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх