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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2009, 08:56   #1
Алексей11111
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 44
По умолчанию Как скопировать диапазоны которые находятся на равном растояние друг от друга...

Ребята, возник такой вопрос с VBA:
Как скопировать диапазоны в excel, которые расположенны через 6 ячеек друг от друга вниз,их должно быть штук 300 всего, или безграничное кол-во, каждый из них расположен на 6 ячеек вниз от предыдущего. Очень нужно, помогите плз, хотя бы примерно!!!

Последний раз редактировалось Алексей11111; 10.11.2009 в 09:05.
Алексей11111 вне форума Ответить с цитированием
Старый 10.11.2009, 09:01   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Будет пример файла с объяснением, что и куда копировать, - поможем.

И переименуйте тему...
EducatedFool вне форума Ответить с цитированием
Старый 10.11.2009, 09:02   #3
Алексей11111
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Будет пример файла с объяснением, что и куда копировать, - поможем.

И переименуйте тему...
Без разницы куда , главное как их выделять, остальное разберусь...
Алексей11111 вне форума Ответить с цитированием
Старый 10.11.2009, 09:09   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub test()
    Dim Диапазон As Range, Область As Range
    Set Диапазон = [a3:d4]:    Set Область = Диапазон
    For i = 1 To 300
        Set Область = Union(Область, Диапазон.Offset(i * 6))
    Next
    Область.Interior.Color = vbGreen ' красим в зелёный цвет
    Область.Copy Worksheets(2).[a1] ' копируем на второй лист
End Sub
И не надо ничего выделять...
EducatedFool вне форума Ответить с цитированием
Старый 10.11.2009, 09:52   #5
Алексей11111
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Код:
Sub test()
    Dim Диапазон As Range, Область As Range
    Set Диапазон = [a3:d4]:    Set Область = Диапазон
    For i = 1 To 300
        Set Область = Union(Область, Диапазон.Offset(i * 6))
    Next
    Область.Interior.Color = vbGreen ' красим в зелёный цвет
    Область.Copy Worksheets(2).[a1] ' копируем на второй лист
End Sub
И не надо ничего выделять...
Вот посмотри плз.,
Dim i As Long: Application.ScreenUpdating = False
i = Cells(Rows.Count, 1).End(xlUp).Row
Rows(i).Copy Rows(i + 1)
Тут копируется последняя заполненная строка в следущую пустую...
А в этот раз нужно скопировать отдельно каждый диапазон из диапазонов которые находятся через равные растояния, на другой лист и в конец всех заполненных строк, начиная с пустого листа... возможно ввести номер диапазона и отдельно нужный диапазон скопировать...
Алексей11111 вне форума Ответить с цитированием
Старый 10.11.2009, 10:13   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуй так:
Код:
Sub test()
    Dim Диапазон As Range, Область As Range
    Set Диапазон = [a3:d4]:    Set Область = Диапазон
    For i = 1 To 300
        Set Область = Union(Область, Диапазон.Offset(i * 6))
    Next
    Область.Interior.Color = vbGreen ' красим в зелёный цвет
    Область.Copy Worksheets(2).Range("a" & Rows.Count).End(xlUp).Offset(1)
    ' копируем на второй лист - вставку начинаем с первой пустой строки
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 10.11.2009, 10:48   #7
Алексей11111
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 44
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Попробуй так:
Код:
Sub test()
    Dim Диапазон As Range, Область As Range
    Set Диапазон = [a3:d4]:    Set Область = Диапазон
    For i = 1 To 300
        Set Область = Union(Область, Диапазон.Offset(i * 6))
    Next
    Область.Interior.Color = vbGreen ' красим в зелёный цвет
    Область.Copy Worksheets(2).Range("a" & Rows.Count).End(xlUp).Offset(1)
    ' копируем на второй лист - вставку начинаем с первой пустой строки
End Sub
Ну ладно спасибо большое... Немножко не так, ну посижу помозгую... Наводка есть))
Алексей11111 вне форума Ответить с цитированием
Старый 10.11.2009, 17:04   #8
Алексей11111
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 44
По умолчанию

Плз., подскажи ещё как скопировать такие же диапазоны на другой лист в диапазоны через 7 ячеек друг от друга, начиная с 7 строчки листа...
Алексей11111 вне форума Ответить с цитированием
Старый 10.11.2009, 17:14   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Поизменяй значения, выделенные красным:
Код:
Sub test()
    For i = 0 To 300
        Worksheets(1).Range("a3:d5").Offset(i * 6).Copy  Worksheets(2).Range("a1").Offset(i * 7 + 6)
    Next
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 10.11.2009, 17:17   #10
Алексей11111
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 44
По умолчанию

Я это понял...Ну Спасибище огромнейший!!!))))
Алексей11111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с кодом judge_arm Microsoft Office Excel 2 01.07.2009 11:48
Помогите с кодом lewka-serdceed Общие вопросы Delphi 1 22.06.2009 00:25
Помогите с кодом eu8cc Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 12 07.06.2009 01:05
Помогите с кодом prostoCHEL Общие вопросы Delphi 4 02.03.2008 21:56