powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / [VBA EXCEL] Range в массив
14 сообщений из 14, страница 1 из 1
[VBA EXCEL] Range в массив
    #37136248
Есть-ли, какой-то короткий и эффективный алгоритм передать значения выбранного диапазона в массив?
типа:
Код: plaintext
1.
2.
3.
Dim SC as Range
Dim Arr_in() as Double

Arr_in = Range.values ' :)
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37136315
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Дмитрий-(сколько-же-нас?)
> Есть-ли, какой-то короткий и эффективный алгоритм передать значения выбранного диапазона в массив?

> типа:

А чем этот не подходит?
Только:

> Dim SC as Range
> Dim Arr_in() as Double
>
> Arr_in = SC .values ' :)

где SC - выделенный диапазон

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37136329
Игорь Горбонос,

Так, не работает!
В том-то и дело...

"Type mismatch!"

:(
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37136333
Пардон,

"Oblect doesn't support this property or method"
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37136341
Насколько я понимаю, у объекта Range нет свойства Values, как такового...
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37136359
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?),
я поиском по слову "массив" нашел ответ за 10 секунд.
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37136389
FДмитрий-(сколько-же-нас?),
я поиском по слову "массив" нашел ответ за 10 секунд.
Везёт же!

Я неделю подобрать ничего полезного не могу :(
Всё, что, пока придумал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
i =  0 
 For Each i_cell In SC
  Arr_in( 0 , i) = i_cell.Value ' Столбец, заданный отдельно
  j =  1 
  For Each i_column In Interpolate_columns ' Столбцы заданы массивом букв
   Arr_in(j, i) = Range(i_column & i_cell.Row).Value
   j = j +  1 
  Next
  i = i +  1 
 Next
Но циклы и "ручное" увеличение индексов меня удручают...
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37136450
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дима, я тебе уже давал пример как это сделать 10265836

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
Dim vGroup As Variant
....
' Получаем массив уникальных данных, для прокрутки по автофильтру
vGroup = r.Range("a2:F" + CStr(r.SpecialCells(xlCellTypeLastCell).Row)).Value2
....
Dim iPriz As Long, iMonth As Long, iGr As Long, i As Long, nCurrRow As Long, bFirst As Boolean
....
For iGr = LBound(vGroup) To UBound(vGroup)
....
Даю ещё один пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Option Explicit

Sub fd()
Dim v As Variant, i As Long, j As Long
v = Range("B1:C5").Value
For i = LBound(v) To UBound(v)
    For j = LBound(v,  2 ) To UBound(v,  2 )
        Debug.Print v(i, j)
    Next j
Next i
End Sub

;)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37136462
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)Везёт же!
Поиск
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37137318
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас?)Есть-ли, какой-то короткий и эффективный алгоритм передать значения выбранного диапазона в массив?
типа:
Код: plaintext
1.
2.
3.
Dim SC as Range
Dim Arr_in() as Double

Arr_in = Range.values ' :)

А это не вариант?
Код: plaintext
1.
Dim Arr_in()
Arr_in() = Range("A1:B10")
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37139061
CurskyА это не вариант?
Код: plaintext
1.
Dim Arr_in()
Arr_in() = Range("A1:B10")


"Type mismatch", однако...
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37139087
Игорь ГорбоносДима, я тебе уже давал пример как это сделать 10265836

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
Dim vGroup As Variant
....
' Получаем массив уникальных данных, для прокрутки по автофильтру
vGroup = r.Range("a2:F" + CStr(r.SpecialCells(xlCellTypeLastCell).Row)).Value2
....
Dim iPriz As Long, iMonth As Long, iGr As Long, i As Long, nCurrRow As Long, bFirst As Boolean
....
For iGr = LBound(vGroup) To UBound(vGroup)
....
Даю ещё один пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Option Explicit

Sub fd()
Dim v As Variant, i As Long, j As Long
v = Range("B1:C5").Value
For i = LBound(v) To UBound(v)
    For j = LBound(v,  2 ) To UBound(v,  2 )
        Debug.Print v(i, j)
    Next j
Next i
End Sub

;)



Да!
Спасибо!!!
Код: plaintext
1.
2.
3.
4.
5.
Dim CS As Range
Dim Arr_tmp As Variant
...
Arr_tmp = SC.Value2
...
Заработало! Удивительно.
Типа, "отстань, с типами и размерностями сам разберусь" ;)
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37139089
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий-(сколько-же-нас"Type mismatch", однако...
Код: plaintext
Arr1 = [A1:B5]
Все. Не нужно не Dim, не Range.
...
Рейтинг: 0 / 0
[VBA EXCEL] Range в массив
    #37139136
FДмитрий-(сколько-же-нас"Type mismatch", однако...
Код: plaintext
Arr1 = [A1:B5]
Все. Не нужно не Dim, не Range.

Без Dim "скучновато", как-то ;)
Я за типизацию "по-максимуму" (Variant -- как консенсус) :)

Спасибо всем!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / [VBA EXCEL] Range в массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]