• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのグラフの不動化(3))

エクセルのグラフで発生した不具合について

このQ&Aのポイント
  • エクセルのグラフで発生した不具合の詳細を検証しようとファイルを開いたところ、同じエラーが再度発生しました。
  • 原因は、ファイル保存時に空白セル以外に保護がかかるVBAの影響だと考えられます。
  • VBAの削除やシート操作時の無効化は検討外なので、他の方法で対策を考えています。

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

>「指定された値は境界を越えています」 このエラーが起きるのは、 Private Sub Workbook_BeforeSave このイベント、つまり、 ブックを保存するときにシートを保護している一方で、 その後、保存したブックを開き、グラフの配置されたシート選び 適当なセルを選択すると、 Worksheet_SelectionChange このイベントが走り、グラフの表示位置を変更しようとします。 つまり、シートが保護されているにもかかわらず シート上のグラフの表示位置を変更しようとしているからです。 シートが保護されている場合であっても、 グラフの表示位置の変更など、 オブジェクトの変更を許す対応が考えられます。 ソースコードで言えば、以下です。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)   Sheets("成績表(提出)").Select   Range("A1").Select   Selection.ClearContents   Sheets("入力表").Select   Range("D2:L2").Select   Selection.ClearContents   Const MyPassword = "" 'パスワード(省略可)   Dim sh As Worksheet   On Error Resume Next   For Each sh In Worksheets     sh.Unprotect Password:=MyPassword     With sh.Cells       '全セルのロックを外す       .Locked = False       '定数が含まれているセルにロックを掛ける       .SpecialCells(xlCellTypeConstants).Locked = True       '数式が含まれているセルにロックを掛ける       .SpecialCells(xlCellTypeFormulas).Locked = True     End With '    sh.Protect DrawingObjects:=True, Contents:=True, _ '      Scenarios:=True, Password:=MyPassword     sh.Protect DrawingObjects:=False, Contents:=True, _       Scenarios:=True, Password:=MyPassword   Next   On Error GoTo 0   Sheets("入力表").Select End Sub

akira0723
質問者

お礼

朝一で試そうとして、ご回答と現行のコードの違いが分からず、もしかして質問のコードを間違って貼り付けた?と思いワードに新旧をコピペして比べてビックリ! 保護シート上のグラフだけ保護解除が、2行で出来るとは! 実際のBookで動作確認も完了しました。 何でもダメ元で聞いてみるべき(人の迷惑顧みず)と再度実感しました。

関連するQ&A