在用户输入表单后锁定单元格

问题描述 投票:0回答:1

大家下午好。希望大家安全。

我刚刚完成了用户表单,现在我需要的是,在提交用户表单后,行和单元格都被锁定。当您在用户窗体中插入数据时,这些数据将转到名为“表”的选项卡,因此我需要锁定表选项卡,并且仅允许用户窗体输入。我需要锁定从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

结束子

这是我的命令按钮的外观

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
excel vba user-controls userform commandbutton
1个回答
0
投票

首先,从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
© www.soinside.com 2019 - 2024. All rights reserved.