0

请您告诉我锁定财产的替代方案。

实际上我有一些宏,使用这些宏我锁定了一些单元格并基于 userEnvironments 解锁了相同的单元格,但是客户端希望它作为共享工作簿,以便多个用户可以一次编辑。锁定需要取消保护保护,这在共享工作簿时是不可能的。

关!所以请你给我一个替代方案来解决我的问题。
任何帮助将不胜感激。

4

2 回答 2

0

如果锁定的属性仍然可用,那么您可以使其无法选择锁定的单元格。这不会阻止一个坚定的用户,因为他们可以禁用宏,但我想锁定更多是为了阻止对公式和内容的意外编辑?

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 时,它​​会将它们向右移动到下一个未锁定的列。如果它是一个选定区域,它会从该区域中删除所有锁定的单元格。我没有真正测试过它,它可能不是最好的解决方案:)

于 2013-01-11T13:50:32.680 回答
0

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我得到了我的问题的答案..

于 2013-01-13T06:13:22.283 回答