我一直在使用Excel文件中的“保护”功能,并且在此论坛上看了一些问题稍有不同的人之后,我决定发表自己的文章。
我有以下Workbook_Open宏,它保护所有工作表,但让宏来做自己的事情:
Private Sub Workbook_Open()
Dim wSheetName As Worksheet
For Each wSheetName In Worksheets
wSheetName.Protect , UserInterFaceOnly:=True
Next wSheetName
End Sub
除了以下更改事件会更改某些图表的最小值和最大值之外,我没有更改任何代码中的保护:
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("statusreport").Protect UserInterFaceOnly:=True, DrawingObjects:=False
Sheets("export").Protect UserInterFaceOnly:=True, DrawingObjects:=False
SOME SELECT CASE MACRO INCLUDING CHANGES MADE TO CHARTS
Sheets("statusreport").Protect UserInterFaceOnly:=True
Sheets("export").Protect UserInterFaceOnly:=True
End Sub
因此,在运行此更改事件之后,仍然无法在任何其他宏中运行ListRow命令,这很有意义。因为在下面的链接之一中,有人说您需要取消保护,执行ListRow并再次保护,因为UserInterFaceOnly不允许这样做。如果我在更改事件结束时写了以下内容:
Sheets("statusreport").Protect UserInterFaceOnly:=True, DrawingObjects:=False
Sheets("export").Protect UserInterFaceOnly:=True, DrawingObjects:=False
或:
Sheets("statusreport").Protect UserInterFaceOnly:=True, DrawingObjects:=True
Sheets("export").Protect UserInterFaceOnly:=True, DrawingObjects:=True
无论我是否在DrawingObjects中选择False或True,ListRow命令都有效。所以我想知道是否如底部最后一个链接中所述,DrawingObjects和UserInterFaceOnly之间存在冲突,还是有其他解释?
感谢您的输入,
巴特
我一直在看以下帖子: