2016-08-09 15 views
1

シート1を使用してWorkbook_Open()から保護されていますマクロ試みは、保護されたシート(UserInterfaceOnly)でグラフを変更するには - >エラー番号:1004

ThisWorkbook.Worksheets("Sheet1").Protect Password:="Pass1", UserInterfaceOnly:=True. 

マクロは、グラフ1の軸ラベルのフォントサイズを変更しようとしています、次のステートメントを使用して:

ThisWorkbook.Worksheets("Sheet1").ChartObjects("Chart1").Chart. _ 
      Axes(xlCategory).TickLabels.Font.Size = 10 

と私は次のエラーを取得する:

Error: 1004.

Unable to set the Size property of the font class.

私は次の回避策を使用する場合、問題はもう発生しません:

ThisWorkbook.Worksheets("Sheet1").Unprotect "Pass1" 
ThisWorkbook.Worksheets("Sheet1").ChartObjects("Chart1").Chart. _ 
      Axes(xlCategory).TickLabels.Font.Size = 10 
ThisWorkbook.Worksheets("Sheet1").Protect "Pass1" 

しかし、私はプロテクト解除を使用しないようにしたい/私は

動作しないようです
ThisWorkbook.Worksheets("Sheet").Protect Password:="Pass1", _ 
     UserInterfaceOnly:=True, 

を使用することを選択した理由ですシートの保護特定の場合には

+0

私はあなたが何を望んでいるのか分かりません。保護されたシートを変更するには、まず保護を解除する必要があります。それが保護の全体のポイントです。あなたの希望する行動は何ですか? –

+0

@AlexisOlson彼のシートはユーザーインターフェイスでのみ保護されています。つまり、VBAは保護されていても問題なく修正できるはずです。 – litelite

+0

@liteiteありがとうございます。それは理にかなっている。 @Anastasiosは、あなたが 'Worksheets(" Sheet ")'を保護していて、 'Worksheets(" Sheet1 ")'を修正しようとしているようです。シート名は一致してはいけませんか? @AlexisOlson。 –

答えて

-1

Worksheet.Protectにはさまざまな議論があります(here参照)。具体的には、明示的にチャートを変更することができますあなたの保護コード

ThisWorkbook.Worksheets("Sheet1").Protect Password:="Pass1", _ 
      UserInterfaceOnly:=True, DrawingObjects:=False 

DrawingObjects:=False引数を追加してみてください。

UserInterfaceOnly:=Trueは、上記のhereのようにVBAの完全な許可を本当に与えていないようです。

+0

こんにちは、あなたの迅速な答えに感謝します。パスワードを保護する:= "Pass1"、_ UserInterfaceOnly:= True、DrawingObjects:= False'を指定すると、DrawingObjectが保護されず、ユーザーが実際にアクセスできるようになりますそれらを手作業で修正するには、右か?ですから、DrawingObjectsを保護し、マクロでそれらを変更できるようにする最良の方法は、マクロ内での保護を強化することです。 – Anastasios

+0

おそらく最も良いことは、コードの最初にすべての保護を解除し、この種のことを避けるためにコードの最後にもう一度保護することです。 –

関連する問題