2016-10-10 135 views
1

在受保護的表單中,我有一個按鈕,用於刪除所選單元格的行,而它們是連貫的行。如果我選擇不同行中的兩個單元格(使用CTRL),它們不在連貫的行中,我會得到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]順便說一句,即使AllowDeletingRows爲True,你將無法與保護細胞刪除行。

編輯:

測試1:新的工作簿,一張。

  • 解鎖行1和3(選擇兩行,編輯格式細胞,取消鎖定)
  • 而不允許行刪除在即時窗口[A1] .EntireRow.Delete
  • 運行工作表保護 - >錯誤1004凸起在即時窗口
  • 潤[A1,E3] .EntireRow.Delete - >錯誤1004提出

試驗2:新的工作簿,一個片材。

  • 解鎖行1和3(選擇兩行,編輯格式細胞,取消鎖定)
  • 具有允許行保護工作表中刪除立即窗口[A1,E3]
  • 運行.EntireRow.Delete - >沒有錯誤
+0

感謝您的回答,但這對我不起作用=/ 我只談論未受保護的行和單元格。 | - >選擇一個單元格並運行宏 - >刪除所選單元格的行 | - >在它們之間選擇兩個單元格,例如第1行和第2行並運行宏 - >刪除選定單元格的行 | - >選擇兩個彼此不相關的單元格,例如第1行和第3行並運行宏 - >錯誤 –

+0

我自己的測試顯示,在受保護的工作表上嘗試刪除解鎖的行時,如果AllowDeletingRows設置爲true,也會顯示錯誤。 –

+0

第二個測試顯示,使用AllowDeleteRows刪除工作表上的兩個單獨解鎖的行不會引發錯誤。 –

1

你的代碼工作正常。 只要確保您正在刪除的所有單元格都未鎖定。 因爲根據你的代碼。如果先選擇不受保護的單元,然後選擇受保護的單元。它將刪除這兩行,而不管第二個選中的單元格是否受保護(鎖定)。

以下圖片僅供參考。

enter image description here

+0

感謝您的回答。我在未受保護的單元格中出現錯誤。例如,我在未受保護的行中選擇一個未受保護的細胞,例如A4和相同的例如E10,這也是一個不受保護的行中的未受保護的單元格,運行宏並獲得錯誤1004. –

相關問題