powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Быстро записать диапазон ячеек с листа Excel в массив и обратно
12 сообщений из 12, страница 1 из 1
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #37730430
Snowblast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Требуется записать за один раз (без поэлементного перебора) диапазон с листа Excel в массив пользовательского типа данных и далее так же за один раз выгрузить этот массив в другой диапазон.

Для массивов типа Variant делал следующим образом:
Код: vbnet
1.
2.
3.
Dim TestArray as Variant
TestArray=Range("A5:C6").Value   ' Запись диапазона в массив
Range("A15:C16").Value=TestArray   ' Запись массива в диапазон


Как проделать подобное с массивом пользовательского типа данных?
...
Рейтинг: 0 / 0
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #37735167
Snowblast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ни у кого нет вариантов?
...
Рейтинг: 0 / 0
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #37735193
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #38939143
Фотография Gabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток !

Пробую записать в массив и обратно в лист.
Только мне надо выборочно несколько колонок.
Делаю так:

Код: vbnet
1.
2.
3.
Dim TestArray() As Variant
TestArray = Range("D11:D15,C11:C15").Value ' Запись диапазона в массив
Range("P11:Q15").Value = TestArray ' Запись массива в диапазон



В результате в массив записывает только D11:D15, и обратно содержимое этого диапазона 2 раза записывается в Лист.
...
Рейтинг: 0 / 0
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #38939182
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здесь эта тема обсуждалась 17492761
...
Рейтинг: 0 / 0
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #38939619
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gabit, работайте по столбцам (областям). Потому что range.Value это на самом деле range.Areas(1).Value .
...
Рейтинг: 0 / 0
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #38939771
Фотография Gabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Sub Sel_Group()
Dim TestArray

Set DataSh = ActiveWorkbook.ActiveSheet
Set TestArray = DataSh.Range("B8:B29,C8:C29,D8:D29,F8:F29,K8:K29,L8:L29")
TestArray.Copy Destination:=DataSh.Range("Q11")

End Sub



Этот макрос работает, если он находиться в файле Excel которую обрабатываю.
Если макрос перенести в другой файл и из него запустить:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub Sel_Group()
Dim TestArray
Dim DataSh

n_cnt = Workbooks.Count

If n_cnt <> 2 Then
   MsgBox ("Не было открыто 2 файла !")
   Exit Sub
End If

Set DataSh = Workbooks(2).Worksheets(1)

TestArray = DataSh.Range("B8:B29,C8:C29,D8:D29,F8:F29,K8:K29,L8:L29")
TestArray.Copy Destination:=DataSh.Range("P11")

End Sub



выдает ошибку:
Run-time error '424':
Object required

на этой строке:
Код: vbnet
1.
TestArray.Copy Destination:=DataSh.Range("P11")




Я обычно создаю отдельный файл для макроса (xlsm) и в нем храню макросы.
Пользователи должны сначала открыть файл с макросом, потом файл с данными.
И из файла макроса запускают макрос.
...
Рейтинг: 0 / 0
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #38939780
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сравните строки из 1 и 2 кода
Код: vbnet
1.
2.
3.
Set TestArray = DataSh.Range("B8:B29,C8:C29,D8:D29,F8:F29,K8:K29,L8:L29")
'и
TestArray = DataSh.Range("B8:B29,C8:C29,D8:D29,F8:F29,K8:K29,L8:L29")
...
Рейтинг: 0 / 0
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #38939897
Фотография Gabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое,
Не думал что Set играет большую роль.
...
Рейтинг: 0 / 0
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #38940218
Фотография Gabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava_PskЗдесь эта тема обсуждалась 17492761
В указанной теме обсуждался создание массива связанный с данными в Excel (Set TestArray).
Но мне нужно обработать массив.
Если начну в массиве внести изменения, данные в листе Excel тоже меняется.
Поэтому сделал:
Код: vbnet
1.
2.
3.
Dim TestArray() As Variant
TestArray = Range("C11:C15,E11:E15").Value ' Запись диапазона в массив
Range("P11:Q15").Value = TestArray ' Запись массива в диапазон


Но в этом случае создается одномерный массив, и в него копируется только содержимое - [C11:C15].
Если написать так:
Код: vbnet
1.
2.
3.
Dim TestArray() As Variant
TestArray = Range("C11:E15").Value ' Запись диапазона в массив
Range("P11:Q15").Value = TestArray ' Запись массива в диапазон


Тогда записывается данные 3-х столбцов, но тут для меня будет лишним [D11:D15].
Пытался по одной графе добавлять в массив, но такому массиву ReDim применить не получилось.
Подскажите пожалуйста выход,
...
Рейтинг: 0 / 0
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #38940220
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну используйте два параллельных одномерных массива
...
Рейтинг: 0 / 0
Быстро записать диапазон ячеек с листа Excel в массив и обратно
    #38941036
Фотография Gabit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня будет до 10 столбцов,
Нет ли другого решения ?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Быстро записать диапазон ячеек с листа Excel в массив и обратно
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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