Lockedプロパティの代替案を教えてください。
実際、私はいくつかのマクロを持っています。それらのマクロでは、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
サブ終了
ついに私は私の質問に対する答えを得ました。