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

Вход

Регистрация

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

 

= Мир MS Excel/Как макросом создать точные копии листа с названиями - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как макросом создать точные копии листа с названиями
НедобрыйКлоун Дата: Вторник, 05.12.2023, 01:54 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте.
Помогите решить вопрос с макросом.

В столбце листа A2:A находятся неповторяющиеся текстовые названия.
Как макросом - создать точные копии листа на котором находится этот столбец - с названиями листов какие записаны A2:A ?
(но с очищенным столбцом A2:A и без кнопки)

Это будет множество листов с названиями y4utyu, tyu5ty3, u75543 и т.д.
К сообщению приложен файл: fajl.xls (29.5 Kb)
 
Ответить
СообщениеЗдравствуйте.
Помогите решить вопрос с макросом.

В столбце листа A2:A находятся неповторяющиеся текстовые названия.
Как макросом - создать точные копии листа на котором находится этот столбец - с названиями листов какие записаны A2:A ?
(но с очищенным столбцом A2:A и без кнопки)

Это будет множество листов с названиями y4utyu, tyu5ty3, u75543 и т.д.

Автор - НедобрыйКлоун
Дата добавления - 05.12.2023 в 01:54
Nic70y Дата: Вторник, 05.12.2023, 08:15 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 9005
Репутация: 2369 ±
Замечаний: 0% ±

Excel 2010
Цитата НедобрыйКлоун, 05.12.2023 в 01:54, в сообщении № 1 ()
и без кнопки
не надо ни какой кнопки.
макрос в модуле книги,
запускается двойным кликом левой кнопки мыши по ячейке A1 первого листа
[vba]
Код
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Application.ScreenUpdating = False
    a = ActiveSheet.Index
    If a = 1 Then
        b = Target.Address
        If b = "$A$1" Then
            c = Cells(Rows.Count, "a").End(xlUp).Row
            For d = 2 To c
                Sheets(1).Copy After:=Sheets(Sheets.Count)
                Sheets(Sheets.Count).Name = Sheets(1).Range("a" & d).Value
                Sheets(Sheets.Count).Range("a2:a" & c).Clear
            Next
        End If
    End If
    Cancel = True
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 27_1.xls (39.0 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Вторник, 05.12.2023, 08:18
 
Ответить
Сообщение
Цитата НедобрыйКлоун, 05.12.2023 в 01:54, в сообщении № 1 ()
и без кнопки
не надо ни какой кнопки.
макрос в модуле книги,
запускается двойным кликом левой кнопки мыши по ячейке A1 первого листа
[vba]
Код
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Application.ScreenUpdating = False
    a = ActiveSheet.Index
    If a = 1 Then
        b = Target.Address
        If b = "$A$1" Then
            c = Cells(Rows.Count, "a").End(xlUp).Row
            For d = 2 To c
                Sheets(1).Copy After:=Sheets(Sheets.Count)
                Sheets(Sheets.Count).Name = Sheets(1).Range("a" & d).Value
                Sheets(Sheets.Count).Range("a2:a" & c).Clear
            Next
        End If
    End If
    Cancel = True
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 05.12.2023 в 08:15
НедобрыйКлоун Дата: Вторник, 05.12.2023, 21:45 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Nic70y, спасибо.
А как это сделать обычным щелчком по кнопке (а не по ячейке) ?

Потому что макрос нужен не в модуле книги, а в обычном модуле.
 
Ответить
СообщениеNic70y, спасибо.
А как это сделать обычным щелчком по кнопке (а не по ячейке) ?

Потому что макрос нужен не в модуле книги, а в обычном модуле.

Автор - НедобрыйКлоун
Дата добавления - 05.12.2023 в 21:45
НедобрыйКлоун Дата: Среда, 06.12.2023, 05:16 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Nic70y, подскажите - а где в этом коде определяется название листа, который надо размножить ?
Например лист называется "СемьВосемьДевять"
И макрос его - уже не видит, и соответственно не срабатывает.
 
Ответить
СообщениеNic70y, подскажите - а где в этом коде определяется название листа, который надо размножить ?
Например лист называется "СемьВосемьДевять"
И макрос его - уже не видит, и соответственно не срабатывает.

Автор - НедобрыйКлоун
Дата добавления - 06.12.2023 в 05:16
Nic70y Дата: Среда, 06.12.2023, 08:17 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 9005
Репутация: 2369 ±
Замечаний: 0% ±

Excel 2010
Цитата НедобрыйКлоун, 06.12.2023 в 05:16, в сообщении № 4 ()
а где в этом коде определяется название листа

A1 первого листа

Цитата НедобрыйКлоун, 05.12.2023 в 21:45, в сообщении № 3 ()
Потому что макрос нужен не в модуле книги, а в обычном модуле.
как хотите
[vba]
Код
Sub u_714()
    Application.ScreenUpdating = False
    With Sheets("Sheet1") 'лист который копируется
        c = .Cells(Rows.Count, "a").End(xlUp).Row 'нижняя строка списка
        For d = 2 To c 'цикл со 2 до нижней строки
            .Copy After:=Sheets(Sheets.Count) 'копируем лист, вставляем после последнего
            Sheets(Sheets.Count).Name = .Range("a" & d).Value 'переименовываем значением из очередной ячейки
            Sheets(Sheets.Count).Range("a2:a" & c).Clear 'очищаем все
            ActiveSheet.Shapes.Range(Array("abc_")).Delete 'удаляем кнопку (имя присвоено)
        Next
    End With
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 27_2.xls (43.5 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение
Цитата НедобрыйКлоун, 06.12.2023 в 05:16, в сообщении № 4 ()
а где в этом коде определяется название листа

A1 первого листа

Цитата НедобрыйКлоун, 05.12.2023 в 21:45, в сообщении № 3 ()
Потому что макрос нужен не в модуле книги, а в обычном модуле.
как хотите
[vba]
Код
Sub u_714()
    Application.ScreenUpdating = False
    With Sheets("Sheet1") 'лист который копируется
        c = .Cells(Rows.Count, "a").End(xlUp).Row 'нижняя строка списка
        For d = 2 To c 'цикл со 2 до нижней строки
            .Copy After:=Sheets(Sheets.Count) 'копируем лист, вставляем после последнего
            Sheets(Sheets.Count).Name = .Range("a" & d).Value 'переименовываем значением из очередной ячейки
            Sheets(Sheets.Count).Range("a2:a" & c).Clear 'очищаем все
            ActiveSheet.Shapes.Range(Array("abc_")).Delete 'удаляем кнопку (имя присвоено)
        Next
    End With
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 06.12.2023 в 08:17
НедобрыйКлоун Дата: Среда, 06.12.2023, 11:08 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Nic70y, спасибо.
 
Ответить
СообщениеNic70y, спасибо.

Автор - НедобрыйКлоун
Дата добавления - 06.12.2023 в 11:08
  • Страница 1 из 1
  • 1
Поиск:

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