Страницы: 1
RSS
динамические изменения с параметрами в UserForms
 
Всем привет!

При создании UserForms столкнулся с тем, что при привязке кнопок к написанным процедурам с параметрами, один из которых является название листа, возникает следующая проблема: в случае если я хочу изменить название листа, то мне приходиться менять соответствующий параметр в каждой процедуре, которая привязана к кнопке.

Ниже две процедуры, которые при нажатии на соответствующие кнопки удаляют или создают лист в книге(CommandButton1_Click, CommandButton2_Click).
Если я хочу изменить название удаляемого/создаваемого листа с "Main" на "Главный лист", то мне необходимо это сделать в двух процедурах (CommandButton1_Click, CommandButton2_Click).

Хотелось бы изменить всего лишь в одном месте. Как это можно реализовать? Подскажите, пжл, как подойти к решению этой проблемы?
Спасибо!

Код
'кнопка удаления существующего в книге листа
Private Sub CommandButton1_Click()
Call SheetDeleter("Main")
End Sub

'кнопка создания несуществующего в книге листа
Private Sub CommandButton2_Click()
Call SheetCreator("Main")
End Sub

'Процедура удаления листа
Sub SheetDeleter(ByVal pSheetName As String)

If ExistSheetWithThatName(pSheetName) Then
    Application.DisplayAlerts = False
    ThisWorkbook.Sheets(pSheetName).Delete
    Application.DisplayAlerts = True
End If

End Sub

'Процедура создания листа
Sub SheetCreator(ByVal pSheetName As String)

If Not ExistSheetWithThatName(pSheetName) Then
    ThisWorkbook.Sheets.Add.Name = pSheetName
End If

End Sub
Изменено: Nikita1994 - 22.02.2021 12:50:24
 
Зачем каждый раз лезть в процедуру менять название листа листа? Попробуйте написать класс и привязать к нему кнопки.
Прикрепил вариант.
Изменено: Nordheim - 22.02.2021 15:42:11
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, благодарю!
Страницы: 1
Наверх