【发布时间】:2020-02-12 02:47:31
【问题描述】:
我创建了一个带有命令按钮(Active X 控件)的 Excel 工作表。该按钮选择并复制单元格 e2:e16,e106:e117。
我还添加了代码来锁定或解锁单元格 C112 和 C116,具体取决于单元格 C3。如果 C3 如果为“1”,则单元保持解锁状态,如果为“2”,则单元锁定。
工作表开始受到保护,因此大多数单元格都被锁定,除了需要输入数据的单元格。
当 ActiveSheet.Protect "" 被注释掉时,它会正确复制,但在我将 C3 更改为 "1" 或 "2" 后,工作表不会保护自己。
如果没有注释掉“ActiveSheet.Protect”,则锁定/解锁有效,但它会尝试选择和复制单元格 C3 并忽略它应该选择和复制的范围。
我希望两者一起工作。
左上角的'ActiveSheet.Protect 被注释掉了。
点击 Copy Narrative 按钮后右上角,它选择并复制正确的区域,但整个工作表不受保护。
左下角 ActiveSheet.Protect 没有被注释掉。
点击 Copy Narrative 后右下角会选择并复制单元格 C3。
选择并复制单元格:
Private Sub copyButton_Click()
'Check for blanks'
If Range("c3").Value = "" Or _
Range("c6").Value = "" Or _
Range("c7").Value = "" Or _
Range("c8").Value = "" Or _
Range("c9").Value = "" Or _
Range("c10").Value = "" Or _
Range("c108").Value = "" Or _
Range("e16").Value = "" Or _
Range("e106").Value = "" Or _
Range("e115").Value = "" Then
MsgBox "Required fields are blank."
Exit Sub
Else
'Copy Ranges
Range("e2:e16,e106:e117").Select
Selection.Copy
End If
End Sub
锁定/解锁单元格:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Change cells locked/unlocked
ActiveSheet.Unprotect ""
If Range("C3").Value = "1" Then
Range("C112,c116").Locked = False
Else: Range("C3").Value = "2"
Range("C112,c116").Locked = True
End If
ActiveSheet.Protect ""
End Sub
【问题讨论】: