Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2008, 08:48   #1
Сер_Ежик
Новичок
Джуниор
 
Регистрация: 19.06.2008
Сообщений: 1
По умолчанию Заполнение диапазона данными массива

Здравствуйте!
Вопрос: можно ли в VBA заполнить экселовский диапазон данными массива в одну операцию?
Поячеечное заполнение - очень тормозной процесс.
Нашел в сети коды для заполнения в одну операцию для Дельфи и С#. Там вообще усё просто, MyRange:=Arraydata
А как в VBA?

С уважением,
Сергей.
Сер_Ежик вне форума Ответить с цитированием
Старый 19.06.2008, 09:55   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Код:
Dim a(1 To 10, 1 To 10) 'Пусть дан двумерный массив 10х10
     
' выводим на первый лист в диапазон "A1:J10" (точно так же с именованным диапазоном)

    Worksheets(1).Range(Cells(1, 1), Cells(10, 10)).Value = a
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.03.2009, 09:30   #3
nikolai_P
Форумчанин Подтвердите свой е-майл
 
Регистрация: 28.04.2008
Сообщений: 116
По умолчанию Итересное дело получается....

SAS888, подскажите пожалуйста где ошибка! Вроде все делал как вы и написали!

Код:
Sub Макрос1()
Dim a(10)
For i = 1 To 10
    a(i) = i
Next
Worksheets("Лист1").Range(Cells(1, 1), Cells(10, 1)).Value = a
End Sub
У меня ничего не происходит, вернее диапазон заполняется пустыми значениями!
nikolai_P вне форума Ответить с цитированием
Старый 24.03.2009, 12:20   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В Excel при вводе данных из ячеек листа в массив (и наоборот) используется обязательно двумерный массив (строки Х столбцы). В Вашем случае, нужно так:
Код:
Sub Макрос1()
    Dim a(1 To 10, 1 To 1)
    For i = 1 To 10
        a(i, 1) = i
    Next
    Worksheets("Лист1").Range(Cells(1, 1), Cells(10, 1)).Value = a
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.03.2009, 16:52   #5
nikolai_P
Форумчанин Подтвердите свой е-майл
 
Регистрация: 28.04.2008
Сообщений: 116
По умолчанию

Благодарю! Все удачно получилось!
nikolai_P вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение массива случайными числами Roomper Помощь студентам 4 12.05.2008 22:34
Заполнение двумерного массива прямоугольников случайными изображениями Mischa Помощь студентам 1 11.03.2008 21:58
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44
Заполнение массива числами Ermiss Общие вопросы C/C++ 7 25.11.2007 14:54
Имя диапазона CAMyM Microsoft Office Excel 8 09.11.2007 10:16