Я хочу, чтобы лист Administrator
действовал как кнопка, но я не хочу идти на фактический лист.Сделать лист действовать как кнопка
Он должен открыть UserForm и оставаться на активном листе, если нажать на Administrator
.
Я хочу, чтобы лист Administrator
действовал как кнопка, но я не хочу идти на фактический лист.Сделать лист действовать как кнопка
Он должен открыть UserForm и оставаться на активном листе, если нажать на Administrator
.
Вы можете создать публичную переменную CurrentSheet
, инициализировать его ActiveSheet
в случае Workbook_Open, а затем в SheetActivate
случае рабочей книги либо обновить значение CurrentSheet
или вернуться к предыдущему текущему листу и показать пользователь форма. Нечто подобное (в Workbook
кода листа):
Public CurrentSheet As Worksheet
Private Sub Workbook_Open()
Set CurrentSheet = ActiveSheet
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Administrator" Then
CurrentSheet.Activate
UserForm1.Show
Else
Set CurrentSheet = Sh
End If
End Sub
На Edit: Для того, чтобы быть в безопасности вы можете также добавить следующий код. Это добавляет уровень защиты, если что-то заставляет проект сбрасываться после события Workbook_Open
. В исходном коде я смог сгенерировать сбой, когда я намеренно перезагрузил проект, прежде чем активировать Администратор.
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Set CurrentSheet = Sh
End Sub
Это может оказать код в Workbook_Open
резервированной, но лично я хотел бы сохранить его в виду того что я не нравится идея иметь неинициализированные глобальные переменные, даже если они будут инициализироваться, прежде чем их использовать. Также - если рабочая книга открывает в Администратор (это может быть некоторое условие ошибки), это гарантирует, что значение CurrentSheet
имеет значение.
Хорошо. Вы что-то пробовали? Можете ли вы показать нам? – BruceWayne