提问人:Bruno Colares 提问时间:9/26/2023 更新时间:9/26/2023 访问量:73
如何使用 VBA 允许在受保护的工作表中编辑范围?
How can I allow edit ranges in a protected worksheet using VBA?
问:
我只想阻止一些范围。换句话说,我想允许在受保护的工作表中进行编辑。我可以手动执行此操作,甚至可以在执行此操作时录制宏。但是当我尝试运行此过程的代码时,屏幕上会弹出错误窗口。
法典:
ActiveSheet.Protection.AllowEditRanges.Add Title:="Intervalo3", Range:= _
Range("H18")
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
错误: 运行时错误 1004 应用程序定义或对象定义错误。
我试图在受保护的工作表中记录允许编辑范围的宏,因为我想自动执行。我成功地录制了允许编辑范围和保护工作表的宏。但是当我转到VBA工作区尝试运行此操作背后的代码时,我无法运行,并且弹出了错误窗口。
答:
0赞
Darren Bartrup-Cook
9/26/2023
#1
我从来没有真正玩过 - 通常我会按照@jkpieterse建议进行操作,并在保护工作表之前解锁“格式化单元格>保护”对话框中的单元格。容易多了。AllowEditRanges
话虽如此,看起来你不能用与现有对象相同的名称来调用一个对象,如果你第二次运行它,你的代码就会这样做。
如果工作表受保护,则也无法删除命名区域。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
评论
0赞
Bruno Colares
9/26/2023
非常感谢。它奏效了,对我有很大帮助。我有点头疼,哈哈。
评论