|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.09.2011, 11:50 | #1 |
Форумчанин
Регистрация: 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. Вооот… Не знаю насколько я Вас затрудню данной просьбой, ну если не сделаете, то хотя бы скиньте подобный макрос, чтобы я мог поковыряться сам… |
16.09.2011, 11:59 | #2 |
Старожил
Регистрация: 15.05.2008
Сообщений: 2,058
|
А почему бы Вам самому для начала не попробовать включить макрорекордер, проделать все по пунктам, и затем уже глянуть, что там за код получился.
А вот там уже и "поковыряться" можно
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499 |
16.09.2011, 12:06 | #3 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 226
|
Не пробовал еще не разу таким баловаться, но мысль мне нравится, сейчас попробую, в принципе я не понимаю только одно как сменять связи...
|
16.09.2011, 12:09 | #4 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 226
|
И как раскопировать на n-2...
|
16.09.2011, 12:17 | #5 |
Старожил
Регистрация: 15.05.2008
Сообщений: 2,058
|
"Лиха беда начало"))))
Вы сделайте, покажите что у Вас получилось, что хотите получить. А уж там общими усилиями как-нибудь "подпилим напильником")))
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499 |
16.09.2011, 13:21 | #6 |
Форумчанин
Регистрация: 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 раз… |
16.09.2011, 13:27 | #7 | |
Старожил
Регистрация: 15.05.2008
Сообщений: 2,058
|
Цитата:
Управляющие структуры ... Циклы
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499 |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменение "Толщины" и "Длины" фигуры одновременно | 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 |