2017-07-30 20 views
0

私はスプレッドシートをまとめていて、行を削除するためのボタンを含めたいと思っています。シートの上部にはシート機能に不可欠ないくつかのセルがありますので、ユーザーがこれらを削除できないようにしたいと思います。以下は、ボタンを1回クリックするごとに達成しようとしているサンプルです。ボタンを使用して特定の行にはない行を削除する

ActiveSheet.Unprotect Password:="password" 
If ActiveCell = Range("B21") Then Exit Sub Else 
Selection.EntireRow.Activate 
Selection.Delete Shift:=xlUp 
ActiveSheet.Protect Password:="password" 
End Sub 

私はこれをうまく動作させるために苦労しており、成功しています。

+0

、 – jsotola

答えて

1

あなただけの後で削除されてから行10以上の任意の行を防ぎたい場合:

If ActiveCell.Row < 10 Then Exit Sub 
ActiveSheet.Unprotect Password:="password" 
Selection.EntireRow.Delete Shift:=xlUp 
ActiveSheet.Protect Password:="password" 

しかし、これは複数の行を選択するユーザーを考慮していないので、あなたもそれを考慮する必要があります。 Selection.Rows.Count > 1をチェックして、trueの場合は終了することもできます。

+0

ありがとうあなたはボタンを使用したい方法を説明し、これは完全に働いてください。私が達成しようとしていたことのために。 – 85l00k85

0

ことActiveCellが「B21」のときに(行を削除しないで、あなたのサンプルに応じて以下のコードを試してみてください。

ActiveSheet.Unprotect Password:="password" 

If Intersect(ActiveCell, Range("B21")) Is Nothing Then 
    ' delete the entire row (no need to use select) 
    ActiveCell.EntireRow.Delete Shift:=xlUp 
End If 
ActiveSheet.Protect Password:="password" 
関連する問題