Как остановить запуск частного саба с паролем - PullRequest
0 голосов
/ 02 мая 2018

У меня есть две частные подпрограммы для активных флажков x. Когда я нажимаю одну кнопку, другая кнопка блокируется. Я хочу создать кнопку, которая будет действовать как переопределение, где, если я введу пароль, две частные подпрограммы не будут работать.

Private Sub CRM_box_Click()
If CRM_box.Value = True Then
    CheckBox14.Value = False
    CheckBox14.Enabled = False
Else
    CheckBox14.Value = False
    CheckBox14.Enabled = True
End If

Private Sub RMP_box_Click()
If RMP_box.Value = True Then
    CRM_box.Value = False
    CRM_box.Enabled = False
Else
    CRM_box.Value = False
    CRM_box.Enabled = True
End If

1 Ответ

0 голосов
/ 02 мая 2018

Чтобы «переопределить» 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 - ваш код переопределен.

В итоге:

  1. Объявление публичной переменной как логического значения.
  2. Установите оператор If в каждом Private Sub для своих флажков.
  3. Создайте пользовательскую форму для ввода пароля.
  4. Введите код для установки пароля и того, что происходит, когда вы отправляете пароль.

Вы можете найти этот ответ полезным для понимания способов, которыми вы можете помешать другим пользователям обойти ваш пароль.

...