2017-12-19 29 views
1

私は答えを探すことを試みましたが、これまでに働いていたものは見つかりませんでした。 。私は何人かの人々のために働くと、このコードを実行するとき(エクセルの同じバージョンを使用して)他の人のために動作しないいくつかのコードがあります。VBA取得エラーワークシートクラスのアクティブメソッドが失敗しました

Private Sub Workbook_Open() 

Application.ScreenUpdating = False 
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 
Application.DisplayFormulaBar = False 
Sheets("Discount").Activate 
ActiveSheet.Unprotect Password:="01"  
ActiveSheet.Range("G14:O15,O18:O19,D29:I29,D31:I31,D33:I33,D35:I35,D37:I37").ClearContents 
ActiveSheet.Shapes("Option Button 31").ControlFormat.Value = xlOn 
OptionButton31_Click 
Application.ScreenUpdating = True 

End Sub 

エラーがシートに現れる(「ディスカウント」)

を有効に

ワークシートのスペルは正しいです。私も試しました

Private Sub Workbook_Open() 

ActiveWorkbook.Unprotect Password:="01" 
Application.ScreenUpdating = False 
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 
    Application.DisplayFormulaBar = False 
    ThisWorkbook.Sheets("Discount").Activate 
    ActiveSheet.Unprotect Password:="01"  
ActiveSheet.Range("G14:O15,O18:O19,D29:I29,D31:I31,D33:I33,D35:I35,D37:I37").ClearContents 
ActiveSheet.Shapes("Option Button 31").ControlFormat.Value = xlOn 
OptionButton31_Click 
ActiveWorkbook.Protect Password:="01" 
Application.ScreenUpdating = True 

まだエラーが表示されます。私は毎回私のために働くので、それを理解するのは苦労しているが、他の人のためではない。

+0

影響を受けるユーザーのコンピュータのコードをステップ実行している間に、奇妙なことが起こっていないかどうかをScreenUpdatingで確認できますか? – Spangen

答えて

3

解決方法1:

代わりのSheets.("Discount").ActivateSheets("Discount").Activateを書いて、それが動作するはずです。たとえば、ドットを削除します。

解決方法2:

これが動作しない場合は、このシートが表示されていることを確認してみてください。例えば。次のエラーでの行の前に書く:ActiveCellActiveSheetActiveWorkbookを回避しようと、一般的には

Sheets("Discount").Visible = True


VBAで - @マットのマグカップで述べたように How to avoid using Select in Excel VBA

、考えますSheetsコレクションにChartsも含まれているため、Worksheets("Discount").Visibleを使用して、ワークシートを参照してください。 、これが機能しない場合

を選択します(「ディスカウント」)を可視 シート(「ディスカウント」)

シーツ私が知っていると何があるのか​​どうかはわかります。

+2

また、 'Worksheet'を使って作業する予定がある場合は、' Worksheets'コレクションを使うべきです。 'Sheets'コレクションにはチャートも含まれています。 –

+0

@ Mat'sMug - それは本当です。 – Vityata

+0

解決策1の場合、ドットはありませんでした。コメントに間違いがありましたが、コードはきれいだったので、残念ながらそれは役に立ちませんでした。ソリューション2では、ワークシートはユーザーフォームのように機能するため、常に表示されます。ファイルがユーザーによって開かれたときにアクティブなワークシートにする必要があります。私はちょうど解決策を考えているかもしれません、多分私は別のマクロとして起動し、残りの部分を記述し、開いているときにそのマクロを参照します。 – Irina

0

は使用してみてくださいそれ以外の場合はお勧めできます。エラーメッセージを書き留めておけば、これが役に立ちます。また、上記の人のようにスクリーン更新をオフにしないで実行してみてください。次に、特定のアクションがある場合に表示されます。

関連する問題