簡體   English   中英

Excel VBA選擇2個不連貫的單元格並刪除行

[英]Excel VBA Select 2 not coherently cells and delete the rows

在受保護的工作表中,我有一個按鈕,可以刪除所選單元格中的行,而它們位於一致的行中。 如果我選擇不同行中的兩個單元格(使用CTRL),這些行不在相干的行中,則會出現1004錯誤。 參見下面的代碼:

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命令可防止刪除受保護的行。 該錯誤僅出現在不受保護的單元中。

代碼有什么問題? 謝謝=)

您的代碼運行正常。 只要確保您要刪除的所有單元都沒有鎖定即可。 因為根據您的代碼。 如果您先選擇非保護單元,然后選擇保護單元。 無論第二個選定的單元格是否受保護(鎖定),都將刪除該行。

以下是供參考的圖像。

在此處輸入圖片說明

保護工作表時,如果要刪除行(甚至是未鎖定的行),則需要明確允許用戶刪除行[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中運行->沒有錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM