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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2009, 11:14   #1
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию добавление и переименование листов книги

есть книга с определенной структурой листов:

сводный анализ годовой
сводный анализ месячный
анализ_1
1
анализ_2
2

и т.д.

лист анализ_1 и лист 1 и далее это месяц и анализ месяца соответсвенно и с каждым новым месяцем надо добавлять два новых листа: "анализ_ХХ" и "ХХ"

подскажите решение для реализации следующей логики:

поскольку листы анализ_1 и 1 будут всегда, то это будут базовые листы.

при добавлении нового листа надо просмотеть все имена с числами или скорее имена состоящие только из чисел и если максимальное значение+1 меньше или равно 12, то скопировать два базовых листа и заменить в их названии цифру на цифру максимальное значение плюс один.

файл-тренажер вложен
Вложения
Тип файла: rar Sheets_copy.rar (3.2 Кб, 15 просмотров)
kievlyanin вне форума Ответить с цитированием
Старый 04.08.2009, 11:33   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если листы никто не будет перемещать, то проще всего так (см. вложение).
Вложения
Тип файла: rar Sheets_copy_2.rar (9.6 Кб, 25 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 04.08.2009, 11:44   #3
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

Sheets.Add.Name однозначно не подойдет.

листы "анализ_ХХ" и "ХХ" связанны кучей формул и для их нормального переноса выделяется два соответсвующих листа и одновременно копируются - тогда связи перепрописываются автоматом.

но в любом случае спасибо - есть на что опереться а тоя вообще не мог понять как подойти к вопросу работы с листами
kievlyanin вне форума Ответить с цитированием
Старый 04.08.2009, 11:54   #4
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Если листы никто не будет перемещать.....

а я таки переместил! из принципа .. почему ошибка возникает??

ага .. понял .. Nm = Sheets(Sheets.Count).Name выдает имя последнего листа а по структуре он с цифрой.

надо что-то более надежное т.к. файл вполне может содержать и дополнительные листы к делу не относящиеся - например уже сейчас просматривается последний лист с инструкциями + возможны еще дополнительные листы.

Последний раз редактировалось kievlyanin; 04.08.2009 в 12:07.
kievlyanin вне форума Ответить с цитированием
Старый 04.08.2009, 12:05   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Вот Вы же сами видите, что неправильный ответ - есть неправильно поставленный вопрос. Вам нужно не добавлять листы, а копировать. Посмотрите вложение (пока не допускающее перемещения листов).
Вложения
Тип файла: rar Sheets_copy_3.rar (9.5 Кб, 17 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 04.08.2009, 12:15   #6
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Вот Вы же сами видите, что неправильный ответ - есть неправильно поставленный вопрос.
угу .. сорри ..


а Array это оно .. это я методом научного тыка вычислил
kievlyanin вне форума Ответить с цитированием
Старый 04.08.2009, 12:15   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
надо что-то более надежное
Посмотрите вариант, не зависящий от расположения листов.
Вложения
Тип файла: rar Sheets_copy_4.rar (9.9 Кб, 30 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 04.08.2009, 12:31   #8
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Посмотрите вариант, не зависящий от расположения листов.
спасибо!

работатет .. .. тока как- я еще не понял ..

и притом че-то совсем не понял - вот эта строка:

Sheets(Array(Sheets(Sheets.Count - 1).Name, Sheets(Sheets.Count).Name)).Copy after:=Sheets(Sheets.Count)

вроде как должна копировать последний и предпоследний лист а она копирует анализ и месяц максимальные .. КАК??

Последний раз редактировалось kievlyanin; 04.08.2009 в 12:42.
kievlyanin вне форума Ответить с цитированием
Старый 04.08.2009, 12:53   #9
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

вот:

Sheets(Array(Sheets(Sheets.Count - 1).Name, Sheets(Sheets.Count).Name)).Copy after:=Sheets(Sheets.Count)

здесь надо копировать не Sheets(Sheets.Count - 1).Name
а лист с именем "анализ_" & Nm и Nm

kievlyanin вне форума Ответить с цитированием
Старый 04.08.2009, 13:03   #10
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

вот так:

Sheets(Array(("анализ_" & Nm), (Nm))).Copy after:=Sheets(Sheets.Count)

одно но как Nm перевести из числа в имя? а то ("анализ_" & Nm) воспринимает нормально находит и копирует а соответсвующий файл месяца воспринимает не как имя а как номер листа.
kievlyanin вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копировние листов из одной книги в другую Jenik Microsoft Office Excel 4 04.03.2009 12:22
вставить в CheckBox на форме название только тех листов книги, которые помечены определенным символом? Bezdar Microsoft Office Excel 4 23.07.2008 15:30
Перенос данных из одной книги со многих листов в другую gavrylyuk Microsoft Office Excel 34 20.07.2008 21:39
Сортировка листов книги RUBEY Microsoft Office Excel 1 17.07.2008 10:57
Добавление строки в книги Леон Microsoft Office Excel 3 10.07.2008 08:17