Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

и т.д.

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

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

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

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

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

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

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

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

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

Цитата:
Сообщение от 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,153
Репутация: 1063
По умолчанию

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

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


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

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

Цитата:
Сообщение от 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
Репутация: 10
По умолчанию

вот:

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
Репутация: 10
По умолчанию

вот так:

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копировние листов из одной книги в другую Jenik Microsoft Office Excel 4 04.03.2009 13: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


19:54.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru