2016-10-10 12 views
1

保護されたシートには、選択されたセルの行をコヒーレントな行にして削除するボタンがあります。私がコヒーレントに行にない別の行(CTRL)で2つのセルを選択した場合、私は1004エラーが発生します。以下のコードを参照してください。Excel VBA 2がコヒーレントにセルを選択せず​​、行を削除します

Sub LöscheDatensatz() 
Application.ScreenUpdating = False 
With ActiveSheet 
    .unprotect Password:="test" 
     If Cells(Selection.Row, 1).Locked = False Then 
      Selection.EntireRow.Delete 
     End If 
    .Protect Password:="test", AllowFiltering:=True 
End With 
Application.ScreenUpdating = True 
End Sub 

ifコマンドは、保護された行の削除を防ぎます。エラーは保護されていないセルにのみ表示されます。

コードで何が間違っていますか?ありがとう=)

+0

選択が「シェイプ」である可能性はありますか? – Pierre

+0

選択はどのように形になりますか? –

答えて

1

あなたはシートを保護する場合は、あなたもロック解除されたもの[1]、あなたが行を削除したい場合は、明示的にユーザーからの行の削除を許可する必要があります。シートを保護する、または次のようなコードを使用して手動で正しいボックスにチェックを入れます:

ActiveSheet.Protect Password:="test", AllowFiltering:=True, AllowDeletingRows:=True 

[1]ところで、でもTrueにAllowDeletingRowsで、あなたは保護された細胞を用いて行を削除することはできません。

編集:

テスト1:新しいワークブック、1枚。 >エラー1004 -

  • はすぐに窓[A1]の行の削除
  • 実行]を.EntireRow.Deleteせることなく、行1および3(ロックオフ、編集形式の細胞を両方の行を選択)
  • 保護ワークシートのロックを解除します新しいワークブック、一枚:エラー1004が

テスト2を上げ> - .EntireRow.Delete [A1、E3]即時ウィンドウで

  • 実行を上げました。

    • はすぐに窓[A1、E3]の行の削除
    • 実行を許可すると、行1と3(ロックオフ、編集形式の細胞を両方の行を選択)
    • 保護ワークシートのロックを解除し.EntireRow.Delete - >エラーなし
  • +0

    答えがありがとうございますが、これは私にとっては役に立ちません=/ 私は保護されていない行とセル。 | - > 1つのセルを選択してマクロを実行する - >選択したセルの行を削除する | - > 2つのセルを選択します。行1と行2を実行し、マクロ - >選択されたセルの行を削除する | - >次のような2つのセルを選択します。行1と行3を実行し、マクロ - >エラー –

    +0

    を実行しました。私自身のテストでは、保護されたシートでAllowDeletingRowsをtrueに設定せずにロックされていない行を削除しようとすると、エラーも表示されます。 –

    +0

    2番目のテストでは、AllowDeleteRowsを使用してシート上の2つの分離されたロックされていない行を削除してもエラーは発生しません。 –

    1

    コードはうまくいきます。 削除しているすべてのセルがロックされていないことを確認してください。 あなたのコードに従って。保護されていないセルを最初に選択し、次に保護されたセルを選択した場合。 2番目の選択されたセルが保護されている(ロックされている)かどうかに関係なく、両方の行が削除されます。

    以下は参考用の画像です。

    enter image description here

    +0

    あなたの答えをありがとう。保護されていない細胞にエラーが発生します。例えば、保護されていない行内の1つの非保護セルを選択する。 A4およびそれと同じ。保護されていない行の非保護セルでもあるE10は、マクロを実行してエラー1004を取得します。 –

    関連する問題