Страницы: 1
RSS
Макрос для автоматизации процесса работы
 
Здравствуйте, нужна помощь в решении следующей задачи. Исходные данные: Задаются 4 разных параметра объекта. Например:
Тип защищаемого элемента: трансформатор
Номинальное напряжение: 110
Вид защиты: ДЗТ
Терминал: ABB RET 670.
Так же, в этой же книге для каждого терминала на отдельном листе есть шаблон. Необходимо, чтобы при выборе терминала, создавался новый лист с шаблоном для этого терминала. Например выбирается терминал ABB RET 670, создается лист с шаблоном для этого терминала, выбирается терминал Бреслер 01.07.701 создается лист с шаблоном этого терминала.
Изменено: Maria1111 - 03.04.2024 16:01:32
 
В модуль листа. Правда, из-за того, что у вас значение в ячейке отличается от имени листа, работает только для Бреслер 0107.701.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C9")) Is Nothing Then
        On Error Resume Next
        Sheets(Range("C9").Value).Copy
        On Error GoTo 0
    End If
End Sub
 
Сделала чтобы все совпадало, но почему то не работает
 
Цитата
Maria1111: Сделала чтобы все совпадало, но почему то не работает
значит не всё совпало. Глаза могут обманывать нас, а Excel всё видит  :D

МатросНаЗебре, с тебя название темы, получается  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
с тебя название темы, получается  
Создать лист, изменяя значение в ячейке.
 
Maria1111, добрый день.
У вас список листов-шаблонов задан вручную (в именах) и не совпадает с реальными листами.
Предлагаю добавить в модуль листа ещё одну процедуру, которая будет пересоздавать список выбора по существующим в книге листам.
Код
Private Sub Worksheet_Activate()
    Dim sSheetList As String, sh As Worksheet
    For Each sh In ActiveWorkbook.Worksheets
        If Not sh Is ActiveSheet And Not (sh.Name Like "*(*)") Then
            sSheetList = sSheetList & IIf(sSheetList = "", "", ",") & sh.Name
        End If
    Next
    Range("C9").Validation.Modify Formula1:=sSheetList
End Sub
 
andypetr, МатросНаЗебре, большое спасибо за помощь! Все работает именно так, как было нужно)
Страницы: 1
Наверх