启用保护时,图表代码不会运行

时间:2018-05-25 14:58:49

标签: excel vba

Excel给了我

  

运行时错误'-2147467259(80004005):方法'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

这段代码有什么不寻常之处吗? 这一切都发生在同一张纸上,我有它所以允许宏运行所以发生了什么? 这是一个瀑布条形图,这就是为什么我首先需要这个以便完全披露。

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果将表单保护配置为禁止编辑,则无法修改受保护的表单:无论您是用户还是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...

答案 1 :(得分:1)

您必须允许用户在保护中“编辑对象”。

enter image description here