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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2011, 11:50   #1
MaxxVer
Форумчанин
 
Регистрация: 17.03.2009
Сообщений: 226
По умолчанию Макрос "Копирование листов, строк, изменение связей"

Добрый день, уважаемые! Очень надеюсь на Вашу помощь в написании следующего макроса. Пример во вложении. Алгоритм следующий:
1) В листе «Начальные параметры» ячейка С10 задаётся значение параметра «n» (числовое).
2) Копируем Лист «Форма2» n-2 раз (называем их соответственно Форма3, Форма4 и т.д.)
3) Лист «Вар.0»:
- Копируем диапазон строк 32:44 n-2 раз, вставляем под строку 44
- Копируем диапазон строк 232:408 (+количество получившихся строк в предыдущей операции) n-2 раз, вставляем под строку 408 (+количество получившихся строк в предыдущей операции).
4) Лист «Вар.1»:
- Копируем диапазон строк 32:44 n-2 раз, вставляем под строку 44
- Копируем диапазон строк 232:408 (+количество получившихся строк в предыдущей операции) n-2 раз, вставляем под строку 408 (+количество получившихся строк в предыдущей операции).
- Копируем диапазон строк 654:895 (+количество получившихся строк в предыдущих операциях) n-2 раз, вставляем под строку 895 (+количество получившихся строк в предыдущих операциях).
5) Теперь самое для меня непонятное – например диапазон строк 654:895 скопировался дважды (n=4), необходимо в первом получившемся диапазоне заменить связи с Листа «Форма 2» на Лист «Форма3»; во втором получившемся диапазоне заменить связи с Листа «Форма 2» на Лист «Форма4». Соответственно зациклить эту операцию на n-2.
Вооот… Не знаю насколько я Вас затрудню данной просьбой, ну если не сделаете, то хотя бы скиньте подобный макрос, чтобы я мог поковыряться сам…
Вложения
Тип файла: rar копи.rar (79.9 Кб, 10 просмотров)
MaxxVer вне форума Ответить с цитированием
Старый 16.09.2011, 11:59   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

А почему бы Вам самому для начала не попробовать включить макрорекордер, проделать все по пунктам, и затем уже глянуть, что там за код получился.
А вот там уже и "поковыряться" можно
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 16.09.2011, 12:06   #3
MaxxVer
Форумчанин
 
Регистрация: 17.03.2009
Сообщений: 226
По умолчанию

Не пробовал еще не разу таким баловаться, но мысль мне нравится, сейчас попробую, в принципе я не понимаю только одно как сменять связи...
MaxxVer вне форума Ответить с цитированием
Старый 16.09.2011, 12:09   #4
MaxxVer
Форумчанин
 
Регистрация: 17.03.2009
Сообщений: 226
По умолчанию

И как раскопировать на n-2...
MaxxVer вне форума Ответить с цитированием
Старый 16.09.2011, 12:17   #5
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

"Лиха беда начало"))))
Вы сделайте, покажите что у Вас получилось, что хотите получить.
А уж там общими усилиями как-нибудь "подпилим напильником")))
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 16.09.2011, 13:21   #6
MaxxVer
Форумчанин
 
Регистрация: 17.03.2009
Сообщений: 226
По умолчанию

Записал макрос для n=3 (один раз). Вот что у меня получилось:

Sub Макрос1()
'
' Макрос1 Макрос
'

'
Rows("32:44").Select
Selection.Copy
Rows("45:45").Select
Selection.Insert Shift:=xlDown
ActiveWindow.SmallScroll Down:=222
Rows("245:421").Select
Application.CutCopyMode = False
Selection.Copy
Rows("422:422").Select
Selection.Insert Shift:=xlDown
ActiveWindow.SmallScroll Down:=432
Rows("844:1085").Select
Application.CutCopyMode = False
Selection.Copy
Rows("1086:1086").Select
Selection.Insert Shift:=xlDown
ActiveWindow.SmallScroll Down:=18
Range("B1086").Select
Sheets("форма2").Select
Application.CutCopyMode = False
Sheets("форма2").Copy Before:=Sheets(4)
Sheets("форма2 (2)").Select
Sheets("форма2 (2)").Name = "форма3"
Range("G38").Select
Sheets("вар.1").Select
Range("B1086:BF1327").Select
Selection.Replace What:="форма2", Replacement:="форма3", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("AQ1312").Select
End Sub

Теперь как-то надо:
1) Встроить в код цикл повторений для указанного параметра «n» (задающегося на листе «параметры» ячейка С10) и прогонять n-2 раз.
2) В цикле с переименованием листов сделать так чтобы код переименовывал их в последовательности форма3, форма4…формаn
3) В команде замены текста в диапазоне (B1086:BF1327) получившегося при копировании добавить цикл так чтобы при следующем обращении он уже брал следующий получившийся диапазон и так n-2 раз…
MaxxVer вне форума Ответить с цитированием
Старый 16.09.2011, 13:27   #7
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Теперь как-то надо:
1)Встроить в код цикл повторений
смотрим, читаем, пробуем...
Управляющие структуры ... Циклы
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение "Толщины" и "Длины" фигуры одновременно 7vlad37 Microsoft Office Excel 2 13.07.2011 17:53
Аналог "Сквозных строк" для формирования итоговых строк на печать. kotyambala Microsoft Office Excel 0 05.05.2010 13:40
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Считывание строк из файла. перемещение по строкам "веред"-"назад" Larkin. Помощь студентам 2 15.06.2009 17:58
Help me! Окно "Изменение связей" Bezdar Microsoft Office Excel 4 18.07.2008 09:33