请您告诉我锁定财产的替代方案。
实际上我有一些宏,使用这些宏我锁定了一些单元格并基于 userEnvironments 解锁了相同的单元格,但是客户端希望它作为共享工作簿,以便多个用户可以一次编辑。锁定需要取消保护和保护,这在共享工作簿时是不可能的。
关!所以请你给我一个替代方案来解决我的问题。
任何帮助将不胜感激。
如果锁定的属性仍然可用,那么您可以使其无法选择锁定的单元格。这不会阻止一个坚定的用户,因为他们可以禁用宏,但我想锁定更多是为了阻止对公式和内容的意外编辑?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cr As Range
Dim Rr As Range
If Not Target.Rows.Count > 1 And Not Target.Columns.Count > 1 Then
If Target.Locked = True Then
Target.Offset(ColumnOffset:=1).Select
End If
Else
If Target.Cells.Count > 1000 Then
Debug.Print "Selection too big!"
Target.Cells(1,1).Select
Exit Sub
End If
For Each Cr In Target.Cells
If Cr.Locked = False Then
If Rr Is Nothing Then
Set Rr = Cr
Else
Set Rr = Application.Union(Rr, Cr)
End If
End If
Next Cr
If Not Rr Is Nothing Then
Rr.Select
End If
End If
End Sub
当用户选择单个单元格并且其锁定属性为 true 时,它会将它们向右移动到下一个未锁定的列。如果它是一个选定区域,它会从该区域中删除所有锁定的单元格。我没有真正测试过它,它可能不是最好的解决方案:)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Dim Rng As Range
Dim Flag As Boolean
Flag = False
For Each Rng In Target.Cells
For Each cell In Worksheets("DATA").Range("A1:AZ10")
If cell.Address = Rng.Address Then
MsgBox "You are not authorized to edit cells in this range."
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Flag = True
Exit For
End If
Next cell
If Flag = True Then
Exit For
End If
Next Rng
结束子
Atlast我得到了我的问题的答案..