Защитите ячейку паролем в Excel

Я совершенно новичок в VBA в Excel и хочу просто защитить с его помощью ячейку.

Код может быть настолько простым, насколько это возможно.

Единственное, что я хочу, это:

  1. Когда пользователь вводит правильный пароль, он обновляется до нового значения.
  2. Если пользователь вводит неправильный пароль, он запрашивает правильный пароль.
  3. Если пользователь закрывает диалоговое окно, значение возвращается к предыдущему.

Пароль может быть «123», а желаемая ячейка — G6.

Я пробовал несколько методов, но всегда застревал в циклах, где можно было просто закрыть диалоговое окно, и новое значение обновлялось без правильного пароля.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G6")) Is Nothing Then
    Dim enteredValue As Variant
    enteredValue = Target.Value ' Store the entered value

    Dim passwordInput As String
    Dim correctPassword As String
    correctPassword = "123" ' Set password

    Do
        passwordInput = InputBox("Enter Password to confirm change (or Cancel to revert):", "Password Required")

        If passwordInput = correctPassword Then ' Correct password, allow the change
            Exit Do
        ElseIf passwordInput = "" Then ' User cancelled
            Application.Undo ' Undo the change immediately
            Exit Do
        End If

    Loop ' Continue if password was wrong

End If

Конец субтитра

Начните запись макроса и защитите ячейку паролем. Затем вы можете увидеть коды из окна VBA.

Harun24hr 29.07.2024 05:44

@BrendonMedeiros Проверьте этот пост stackoverflow.com/a/69325825/5514747

Harun24hr 29.07.2024 05:47

@BrendonMedeiros spreadsheetweb.com/how-to-lock-formula-cells-with-vba

Harun24hr 29.07.2024 05:48
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
3
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Хорошо, я заставил его работать так, как задумано.

Private Sub Worksheet_Change(ByVal Target As Range)

' Define password
Const Password As String = "123"

' Check if cell is A1
If Target.Address = "$A$1" Then
    Dim Answer As String
    Answer = InputBox("Input password:", "Password Chack")

    ' Check if answer is ccorrect
    If Amswer = Password Then
        ' allow update
        Exit Sub
    Else
        ' undo update and error message
        Application.EnableEvents = False ' avoid ad infinitum loop
        Application.Undo
        Application.EnableEvents = True
        MsgBox "Inccorect password. Undone", vbCritical, "Error"
    End If
End If

Конец субтитра

Ответ принят как подходящий

Чтобы защитить ячейку паролем в Excel с помощью VBA, вы можете использовать следующий подход. Этот код предложит пользователю ввести пароль, когда он попытается изменить значение ячейки G6. Если введен правильный пароль, значение обновляется. Если введен неправильный пароль или пользователь закрывает диалог, значение возвращается к предыдущему.

Private Sub Worksheet_Change(ByVal Target As Range)
    'If Changed Cell is G6
    If Not Intersect(Target, Range("G6")) Is Nothing Then
        Application.EnableEvents = False ' Disable events to prevent infinite loop
        Dim enteredValue As Variant
        Dim oldValue As Variant
        Dim passwordInput As String
        Dim correctPassword As String
        
        'Keeping old value in memory before change
        oldValue = Target.Value

        'Ask for the password
        correctPassword = "123"
        
        passwordInput = InputBox("Enter Password to confirm change (or Cancel to revert):", "Password Required")

        'Validate Password
        If passwordInput <> correctPassword Then
            'Password not correct or cancel operation values reverted
            Application.Undo
            If passwordInput <> "" Then
                MsgBox "Incorrect password. Change reverted."
            End If
        End If
        
        Application.EnableEvents = True ' Re-enable events
    End If
End Sub

Спасибо за помощь. Я получил рабочий код очень похожим способом.

Brendon Medeiros 29.07.2024 07:23

Другие вопросы по теме