Блокировать ячейки после ввода пользовательской формы - PullRequest
0 голосов
/ 16 июня 2020

Мне нужно, чтобы после отправки пользовательской формы эта строка и ячейки были заблокированы.

Когда вы вставляете данные в пользовательскую форму, эти данные go на вкладку под названием «таблица». Мне нужно заблокировать вкладку ТАБЛИЦА и разрешить ввод только пользовательской формы.

Мне нужно, чтобы строки и ячейки от A4 до AF4 были заблокированы для редактирования.

Я пробовал использовать этот код.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyRange As Range

Set MyRange = Intersect(Range("A1:D100"), Target)
If Not MyRange Is Nothing Then
    Sheets("Sheet1").Unprotect password:="hello"
    MyRange.Locked = True
    Sheets("Sheet1").Protect password:="hello"
End If
End Sub

Так выглядит моя командная кнопка

Private Sub CommandButton2_Click()
Dim sh As Worksheet, lastRow As Long
Set sh = Sheets("Details")lastRow = sh.Range("A" & Rows.Count).End(xlUp).row + 1
sh.Range("A" & lastRow).value = TextBox3.value
sh.Range("B" & lastRow).value = TextBox4.Text
sh.Range("C" & lastRow).value = TextBox5.Text
Unload Me
End sub

1 Ответ

1 голос
/ 16 июня 2020

Сначала вручную заблокируйте ячейки из A4:AF[ChooseTheLastRow], а затем защитите рабочий лист паролем и не разрешайте выбор заблокированных ячеек.

Затем сделайте это в своем коде.

Private Sub CommandButton2_Click()

  Dim sh As Worksheet
  Set sh = Sheets("Details") 'you called this TABLE in your text above, no?

  With sh

      .unprotect "PASSWORD"

      Dim lastRow As Long
      lastRow = .Range("A" & Rows.Count).End(xlUp).row + 1

      .Range("A" & lastRow).value = TextBox3.value
      .Range("B" & lastRow).value = TextBox4.Text
      .Range("C" & lastRow).value = TextBox5.Text

      .protect "PASSWORD"

  End With

End sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...