excel - 保护开启时图表代码不运行
问题描述
Excel给了我
运行时错误'-2147467259(80004005):对象'Axis'的方法'Maximumscale'失败
但只有当我保护了工作表时。
现在,我在ThisWorkbok
excel 对象上也有 unprotect 代码,如下所示:
Sheets("Charted").Protect Password:="123", UserInterFaceOnly:=True
我的代码如下:
Sub SetAxes()
Dim objCht As ChartObject, AxisOne As Long, AxisTwo As Long, RangeMin As Double
Dim RangeMax As Double, rng As Range
For Each objCht In Sheets("Charted").ChartObjects
AxisOne = Sheets("Charted").Range("$H$32").Value
AxisTwo = Sheets("Charted").Range("$H$6").Value
Set rng = Sheets("Charted").Range("H7:H31")
RangeMin = Application.WorksheetFunction.Min(rng)
RangeMax = Application.WorksheetFunction.Max(rng)
With objCht.Chart
With .Axes(xlValue)
If AxisOne > AxisTwo Then
.MaximumScale = AxisOne + 2000000 + RangeMax
.MinimumScale = AxisTwo - 2000000
Else
.MaximumScale = AxisTwo + 500000 - RangeMin 'Error Occurs on this line
.MinimumScale = AxisOne - 2000000
End If
End With
End With
Next objCht
Call HideZeroRows
End Sub
这段代码有什么不寻常的地方吗?这一切都发生在同一张纸上,我有它,所以允许运行宏,这是怎么回事?这是一个瀑布条形图,这就是为什么我首先需要它来全面披露。
提前致谢。
解决方案
如果工作表保护配置为不允许编辑,则无法修改受保护的工作表:无论您是用户还是 VBA 程序都没有区别:您需要先取消保护工作表,然后才能对其进行任何更改:
Dim wasProtected As Boolean
If theSheet.ProtectionMode Then
wasProtected = True
theSheet.Unprotect '...args...
End If
'modify everything you need to modify
If wasProtected Then theSheet.Protect '...args...
推荐阅读
- c# - 是否可以优化这些 if-else 语句?
- java - Java MongoDB 驱动程序 3.8 版——如何设置超时?
- maven - 未能执行目标 org.apache.maven.plugins:maven-war-plugin:2(netbeans)
- wordpress - 在WordPress中开发时,如何关闭计划维护模式
- java - 如何创建父级最后的类加载器层次结构?
- docker - 如何将参数连接到现有的 Dockerfile CMD?
- python - 检索用于创建 Numpy 数组的初始列表
- javascript - 如何使用 Mongoose 在 mongodb 中正确创建两个模型之间的引用?
- ibm-data-replication - IIDR CDC 通知
- amazon-web-services - (Flutter) CognitoUserSession 无效,因为 idToken 为空