workbook_open
В случае, если шаблон, у меня есть горячая клавиша ^m
зарегистрированной для запуска UserForm DataValidation
:Как убедиться, что горячая клавиша запускает UserForm для активной книги?
Private Sub workbook_open()
Application.OnKey "^m", "launchDataValidation"
End Sub
Sub launchDataValidation()
DataValidation.Show
End Sub
Вполне возможно, что там будут несколько книг, открытой в то же время, построены на основе этого шаблона. Я хочу убедиться, что, когда пользователь нажимает горячую клавишу, запускаемая UserForm выполняется из активной книги, так что любые операции, выполняемые этим UserForm, будут влиять только на эту книгу.
Я попытался переписывания launchDataValidation
как:
Sub launchDataValidation()
On Error GoTo errHandler
ActiveWorkbook.DataValidation.Show
Exit Sub
errHandler:
End Sub
Цель состоит в том, что открывается DataValidation
формы активной рабочей книги, и если активная книга не имеет DataValidation
формы, ничего не происходит. Но вместо этого вызов ActiveWorkbook.DataValidation.Show
переходит к обработчику ошибок, предполагая, что это не правильный способ открыть эту форму в активной книге.
Я также попытался:
Sub launchDataValidation()
Dim bkName As String
Dim runString As String
bkName = ActiveWorkbook.Name
runString = "'" & bkName & "'!DataValidation.Show"
On Error GoTo errHandler
Application.Run runString
Exit Sub
errHandler:
End Sub
Это также бросил ошибку.