2016-10-10 126 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. –

相关问题