bugfix> excel > 投稿

Excelは私に与えます

Run-time error '-2147467259 (80004005): Method 'Maximumscale' of object 'Axis' failed

ただし、シートが保護されている場合のみ。
今、私はまた、 ThisWorkbok の保護されていないコードを持っています次のようなExcelオブジェクト。

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 件
  • 編集を許可しないようにシート保護が構成されている場合、保護されたシートを変更することはできません。ユーザーであっても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...
    
    

  • ユーザーが保護する「オブジェクトの編集」を許可する必要があります。

     

あなたの答え