2017-08-04 12 views
2

シートが保護されているときに、ユーザーが行を挿入できるようにする方法を見つけようとしています。例えば、私は、ユーザが行 "1"と "2"の間に行を挿入できないようにしたい(マクロが面白いことをするため)が、行を挿入できるようにしたい他のすべて。特定の範囲にのみ行を挿入するシートを保護する

次のコードは、ユーザーがシートの至る所に行を挿入することができますが、それは私が欲しい正確に何ではありません。

ActiveSheet.Protect Password:="qwerty", DrawingObjects:=True, Contents:=True, Scenarios:=True _ 
    , AllowFormattingCells:=True, AllowFormattingColumns:=True, _ 
    AllowFormattingRows:=True, AllowInsertingRows:=True, AllowDeletingRows:=True 

誰かがこの問題で私を助けることができますか?唯一の特定の範囲内の行を挿入するからユーザーを防ぐための方法はありません

+0

単純な方法では、「非常に隠れたシート」のようになります。「A1」に式「= A2」があります。そして、単純にそれをチェックして、式は、 '= A2'は、単に' Application.Undo'でない場合:P –

答えて

2

ユーザーが誤ってやってからそれらを防ぐ可能性がある上位2行のセルを選択しないように、あなたはそれらのセルをロックし、ロックされたセルの選択を防ぐことができますそれ?

また、行の挿入をロックし、UserInterfaceOnly:=Trueを設定し、行を間違った場所に挿入しようとしている場合は、マクロを使用して行挿入を処理することができます。

ユーザーがワークシート全体に行を挿入できる必要がありますか?

+0

私たちは、ワークシートのSelectionChangeイベントでこれを達成することができます。 – Shrikant

+0

それは –

+0

しかしビットjanky以上だはい、それはです:)しかし、彼はだけなので、これを行う方法を求めているように私は、コードを置きます。 – Shrikant

1

以下のコードは、ワークシート選択変更イベントで使用できます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Target.Row = 1 Or Target.Row = 2 Then 
     'MsgBox "Check" 
     ActiveSheet.Protect Password:="qwerty", DrawingObjects:=True, Contents:=True, Scenarios:=True _ 
     , AllowFormattingCells:=True, AllowFormattingColumns:=True, _ 
     AllowFormattingRows:=True, AllowInsertingRows:=False, AllowDeletingRows:=True 
    Else 
     ActiveSheet.Unprotect Password:="qwerty" 
    End If 
End Sub 
+0

ありがとう!それは完全に機能します。 –

+0

あなたはようこそ... – Shrikant

関連する問題