У меня есть сценарий VBA в нескольких шаблонах книг, которые разблокируют текущий (активный) рабочий лист. Я использую ту же горячую клавишу, чтобы пользователям, которым разрешено использовать макрос, не нужно помнить, какая горячая клавиша позволяет им разблокировать книгу.Используйте ту же горячую клавишу в нескольких книгах
Это обычно не вызывает головных болей, так как большинство пользователей не могут открывать одновременно несколько книг (и, по всей вероятности, не используют горячие клавиши). Проблема в том, что если у меня открыто более одной рабочей книги и попробуйте запустить скрипт VBA с помощью горячей клавиши, в настоящее время я получаю случайный экземпляр скрипта VBA. Это вызывает проблемы, поскольку пароль отличается между книгами, поэтому, если горячая клавиша запускает скрипт VBA в WB X, а я в WB Y, я получаю сообщение об ошибке.
Как можно понять, есть ли способ сделать это так, чтобы сценарий VBA из активной книги по этой горячей клавише использовался? Запрос
Per Alter здесь это облагороженная версия моего lock_unlock VBA скрипта
Sub Lock_Unlock()
Dim CurrentUser As String 'holds the current users Windows login
Dim Approved As String
Approved = "|user1|user2|user3|"
'Give CurrentUser it's value
CurrentUser = Environ$("username")
'Check if the user is approved
If InStr(1, Approved, CurrentUser) > 0 Then
'The user can use this macro. Check if the sheet is currently locked
If ActiveSheet.ProtectContents = True Then
'It is, unlock
ActiveSheet.Unprotect Password:=PW()
Else
'It isn't, relock
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, Password:=PW()
End If
'Not a user approved to use this macro, don't do anything
End If
End Sub
Function PW() As String
PW = "password"
End Function
Я был бы очень заинтересован в коде, если вы хотите его включить. У меня есть аналогичная проблема, которую мне нужно решить, и это может сэкономить много времени, если я использую ваши в качестве основы. – Alter