我只想阻止某些范围。换句话说,我想允许在受保护的工作表中进行编辑。我可以手动执行此操作,甚至可以在执行此操作时录制宏。但是当我尝试运行此过程的代码时,屏幕上会弹出错误窗口。
代码:
ActiveSheet.Protection.AllowEditRanges.Add Title:="Intervalo3", Range:= _
Range("H18")
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
错误: 运行时错误1004 应用程序定义或对象定义错误。
我尝试在受保护的工作表中记录允许编辑范围的宏,因为我想自动执行此操作。我成功地录制了宏,允许编辑范围并保护工作表。但是,当我进入 VBA 工作区尝试运行此操作背后的代码时,我无法运行,并且弹出了错误窗口。
我从来没有真正玩过
AllowEditRanges
- 通常我会按照@jkpieterse的建议进行操作,并在保护工作表之前解锁格式单元格>保护对话框中的单元格。容易多了。
话虽如此,看起来您无法调用与现有对象同名的
AllowEditRange
对象,如果您第二次运行它,这就是您的代码所做的事情。AllowEditRange
命名范围。
话虽如此,这似乎可以解决问题:
Public Sub Test()
Dim EditRangeTitle As String
EditRangeTitle = "Intervalo3"
With ThisWorkbook.Worksheets("Sheet1")
.Unprotect
Dim AER As AllowEditRange
For Each AER In .Protection.AllowEditRanges
If AER.Title = EditRangeTitle Then Exit For
Next AER
If Not AER Is Nothing Then
AER.Delete
End If
.Protection.AllowEditRanges.Add Title:=EditRangeTitle, Range:=.Range("H18")
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End Sub
这适用于包含代码 (
Sheet1
) 的工作簿的 ThisWorkbook
。
进一步阅读:
以...结束
本练习册
对于每个...下一个