首页 > 解决方案 > 保护开启时图表代码不运行

问题描述

Excel给了我

运行时错误'-2147467259(80004005):对象'Axis'的方法'Maximumscale'失败

但只有当我保护了工作表时。
现在,我在ThisWorkbokexcel 对象上也有 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

这段代码有什么不寻常的地方吗?这一切都发生在同一张纸上,我有它,所以允许运行宏,这是怎么回事?这是一个瀑布条形图,这就是为什么我首先需要它来全面披露。

提前致谢。

标签: excelvba

解决方案


如果工作表保护配置为不允许编辑,则无法修改受保护的工作表:无论您是用户还是 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...

推荐阅读