当macros尝试修改保护工作表(UserInterfaceOnly)中的图表 – >错误#:1004

Sheet1受到Workbook_Open()保护,使用:

 ThisWorkbook.Worksheets("Sheet1").Protect Password:="Pass1", UserInterfaceOnly:=True. 

一个macros试图改变Chart1的轴标签的字体大小,使用以下语句:

 ThisWorkbook.Worksheets("Sheet1").ChartObjects("Chart1").Chart. _ Axes(xlCategory).TickLabels.Font.Size = 10 

我得到以下错误:

错误:1004。

无法设置字体类的大小属性。

当我使用以下解决方法时,问题不再发生:

 ThisWorkbook.Worksheets("Sheet1").Unprotect "Pass1" ThisWorkbook.Worksheets("Sheet1").ChartObjects("Chart1").Chart. _ Axes(xlCategory).TickLabels.Font.Size = 10 ThisWorkbook.Worksheets("Sheet1").Protect "Pass1" 

但是我想避免使用Unprotect / Protect表单,这就是我select使用的原因

 ThisWorkbook.Worksheets("Sheet").Protect Password:="Pass1", _ UserInterfaceOnly:=True, 

这似乎不适用于特定情况。

Worksheet.Protect有各种各样的参数可以使用(见这里 )。 特别是,尝试添加DrawingObjects:=False参数到您的保护代码

 ThisWorkbook.Worksheets("Sheet1").Protect Password:="Pass1", _ UserInterfaceOnly:=True, DrawingObjects:=False 

这将明确允许您修改图表。

看来UserInterfaceOnly:=True并不真正赋予VBA完全的权限,正如这里所提到的。