Чтобы «переопределить» Private Sub
для своих флажков, вы можете сделать следующее:
В вашем VBE создайте Модуль (если у вас его еще нет) и введите Public override As Boolean
в первой строке.
Для каждого из ваших личных сабвуферов для флажков добавьте следующее к вашему текущему If
утверждению: If override = False Then Exit Sub
примерно так:
Private Sub CRM_box_Click()
If override = False Then Exit Sub
If CRM_box.Value = True Then
RMP_box.Value = False
RMP_box.Enabled = False
Else
RMP_box.Value = False
RMP_box.Enabled = True
End If
End Sub
Для части пароля вашего вопроса вы можете создать UserForm
.
Если вы не знакомы с пользовательскими формами, существует множество учебных пособий и инструкций по их созданию с помощью поиска в Google типа «Как создать пользовательскую форму в Excel» или аналогичного ему.
Я сделал простой UserForm
с label
, textbox
и commandbutton
. Смотрите здесь.
Для commandbutton
вы можете использовать следующий код:
Private Sub CommandButton1_Click()
Dim pwrd As String
Dim setPwrd As String
pwrd = UserForm1.TextBox1.Text
setPwrd = "abc" 'Change this string to whatever you want your password to be
If pwrd = setPwrd Then
override = False
Unload UserForm1
Else
MsgBox "Incorrect Password" & vbNewLine & "Please try again.", vbCritical
End If
End Sub
Когда вы вводите свой пароль в текстовое поле и нажимаете кнопку команды, vba сравнивает ваш ввод с переменной setPassword
. Если это совпадение, оно устанавливает переменную Public override
в False
. Если пароль не совпадает, вы получаете сообщение, чтобы повторить попытку.
Если override = False
, то перед тем, как выполнить код, ваш Private Sub
для ваших флажков будет Exit Sub
- ваш код переопределен.
В итоге:
- Объявление публичной переменной как логического значения.
- Установите оператор If в каждом Private Sub для своих флажков.
- Создайте пользовательскую форму для ввода пароля.
- Введите код для установки пароля и того, что происходит, когда вы отправляете пароль.
Вы можете найти этот ответ полезным для понимания способов, которыми вы можете помешать другим пользователям обойти ваш пароль.