Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Добавление листа по шаблону с присвоением следующего номера - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление листа по шаблону с присвоением следующего номера (Макросы/Sub)
Добавление листа по шаблону с присвоением следующего номера
китин Дата: Четверг, 21.09.2017, 11:13 | Сообщение № 1
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Доброго всем времени суток, уважаемые!!!!
Появилась интересная задачка, которую сам решить к сожалению не могу :'(
в инпут, текст и прочих боксах просто очень слаб.
Есть лист панель управления. на нем имеется некий список . Есть листы, которые называются так же, как и список. Есть необходимость добавления листов по шаблону. То есть если надо добавить лист фирма, то он д.б. скопирован с листа фирма с добавлением цифры 2. если опять надо добавить лист фирма, то он опять копируется с того же листа фирма но уже с цифрой 3. ну и так далее. Прошу вашей помощи!!!
pray
К сообщению приложен файл: 5753236.xlsm (46.5 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеДоброго всем времени суток, уважаемые!!!!
Появилась интересная задачка, которую сам решить к сожалению не могу :'(
в инпут, текст и прочих боксах просто очень слаб.
Есть лист панель управления. на нем имеется некий список . Есть листы, которые называются так же, как и список. Есть необходимость добавления листов по шаблону. То есть если надо добавить лист фирма, то он д.б. скопирован с листа фирма с добавлением цифры 2. если опять надо добавить лист фирма, то он опять копируется с того же листа фирма но уже с цифрой 3. ну и так далее. Прошу вашей помощи!!!
pray

Автор - китин
Дата добавления - 21.09.2017 в 11:13
Manyasha Дата: Четверг, 21.09.2017, 12:02 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Игорь, привет.
В файле была какая-нибудь форма? Сейчас нет ничего, кроме листов.
Как узнать, какой лист будем сейчас добавлять (напр. по даблклику в ячейке с именем шаблона)?


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеИгорь, привет.
В файле была какая-нибудь форма? Сейчас нет ничего, кроме листов.
Как узнать, какой лист будем сейчас добавлять (напр. по даблклику в ячейке с именем шаблона)?

Автор - Manyasha
Дата добавления - 21.09.2017 в 12:02
_Boroda_ Дата: Четверг, 21.09.2017, 12:06 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вот как раз по даблклику и написал
Как обычно для Игоря, с комментариями
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim sh_ As Worksheet, sh1_ As Worksheet
    If Target = "" Then Exit Sub 'если даблкликнули на пустую ячейку - выход из макроса
    For Each sh_ In ThisWorkbook.Worksheets 'цикл по листам книги
        If InStr(sh_.Name, Target) = 1 Then 'если имя листа начинается со значения той ячейки, куда топнули
            Set sh1_ = sh_  'назначему этому листу обзывалку "sh1_" и проверяем остальные листы
                            'в итоге находим самый правый лист, удовлетворяющий условию
        End If
    Next sh_
    If sh1_ Is Nothing Then Exit Sub 'если никому не назначили "sh1_", то выход из макроса
    Application.ScreenUpdating = 0 'отключаем обновление экрана
    With sh1_ 'работа с листом "sh1_"
        shn0_ = .Name 'его имя
        For i = 1 To Len(shn0_) 'цикл от 1 до количества символов в имени
            If IsNumeric(Right(shn0_, i)) Then 'если i знаков справа - число, то
                ind_ = Right(shn0_, i) 'присваиваем переменной значение этого числа
            Else 'иначе
                Exit For 'выход из цикла
            End If
        Next i 'конец цикла. i всегда на единицу больше количества цифр справа у имени листа
        ind_ = ind_ + 1 'получаем новое число для нового листа
        Cancel = True 'запрещаем проваливаться в ячейку при даблклике
        .Copy after:=sh1_ 'копируем найденный лист вправо от себя
        shn_ = Left(shn0_, Len(shn0_) - i + 1) & ind_   'отрубаем от названия старого листа все буквы слева
                    'и приклеиваем ind_
        Worksheets(.Index + 1).Name = shn_ 'переназываем новый лист
    End With
    Me.Activate 'активируем лист "Панель управления"
    Application.ScreenUpdating = 1 'включаем обновление экрана
End Sub
[/vba]
К сообщению приложен файл: 5753236_1.xlsm (94.6 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВот как раз по даблклику и написал
Как обычно для Игоря, с комментариями
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim sh_ As Worksheet, sh1_ As Worksheet
    If Target = "" Then Exit Sub 'если даблкликнули на пустую ячейку - выход из макроса
    For Each sh_ In ThisWorkbook.Worksheets 'цикл по листам книги
        If InStr(sh_.Name, Target) = 1 Then 'если имя листа начинается со значения той ячейки, куда топнули
            Set sh1_ = sh_  'назначему этому листу обзывалку "sh1_" и проверяем остальные листы
                            'в итоге находим самый правый лист, удовлетворяющий условию
        End If
    Next sh_
    If sh1_ Is Nothing Then Exit Sub 'если никому не назначили "sh1_", то выход из макроса
    Application.ScreenUpdating = 0 'отключаем обновление экрана
    With sh1_ 'работа с листом "sh1_"
        shn0_ = .Name 'его имя
        For i = 1 To Len(shn0_) 'цикл от 1 до количества символов в имени
            If IsNumeric(Right(shn0_, i)) Then 'если i знаков справа - число, то
                ind_ = Right(shn0_, i) 'присваиваем переменной значение этого числа
            Else 'иначе
                Exit For 'выход из цикла
            End If
        Next i 'конец цикла. i всегда на единицу больше количества цифр справа у имени листа
        ind_ = ind_ + 1 'получаем новое число для нового листа
        Cancel = True 'запрещаем проваливаться в ячейку при даблклике
        .Copy after:=sh1_ 'копируем найденный лист вправо от себя
        shn_ = Left(shn0_, Len(shn0_) - i + 1) & ind_   'отрубаем от названия старого листа все буквы слева
                    'и приклеиваем ind_
        Worksheets(.Index + 1).Name = shn_ 'переназываем новый лист
    End With
    Me.Activate 'активируем лист "Панель управления"
    Application.ScreenUpdating = 1 'включаем обновление экрана
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 21.09.2017 в 12:06
китин Дата: Четверг, 21.09.2017, 13:28 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Спасибо Саша!!! Все работает, но шеф хочет кнопочку ( одну ) што бы нажать, выбрать какой лист добавлять и нажать ок. я почему и написал:
в инпут, текст и прочих боксах просто очень слаб.


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеСпасибо Саша!!! Все работает, но шеф хочет кнопочку ( одну ) што бы нажать, выбрать какой лист добавлять и нажать ок. я почему и написал:
в инпут, текст и прочих боксах просто очень слаб.

Автор - китин
Дата добавления - 21.09.2017 в 13:28
_Boroda_ Дата: Понедельник, 25.09.2017, 12:15 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Игорь, забыли мы совсем про кнопочку твоему начальнику, извини.

Вот, лови. Комментарии в коде макроса
К сообщению приложен файл: 5753236_2.xlsm (66.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеИгорь, забыли мы совсем про кнопочку твоему начальнику, извини.

Вот, лови. Комментарии в коде макроса

Автор - _Boroda_
Дата добавления - 25.09.2017 в 12:15
китин Дата: Вторник, 03.10.2017, 10:22 | Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Саша от всей души!!!! СПАСИБО!!!!


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеСаша от всей души!!!! СПАСИБО!!!!

Автор - китин
Дата добавления - 03.10.2017 в 10:22
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление листа по шаблону с присвоением следующего номера (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!