0

Lockedプロパティの代替案を教えてください。

実際、私はいくつかのマクロを持っています。それらのマクロでは、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 

サブ終了

ついに私は私の質問に対する答えを得ました。

于 2013-01-13T06:13:22.283 に答える