私はVBAの新機能ですので、経験豊かなユーザーには問題が明らかな場合は申し訳ありません。私は、同様の質問への回答のカップルを読んで、問題を解決しようとしましたが、同じ問題に直面していました。VBA - 選択方法が失敗しました
私のコードは次のとおりです。
Workbooks("XXX.xls").Activate
' Setting column width
Workbooks("XXX.xls").Worksheets("XXX").Cells.Select
Selection.ColumnWidth = 10
' Filtering XXX funds
Workbooks("XXX.xls").Worksheets("XXX").Rows("1:1").Select
Selection.AutoFilter Field:=3, Criteria1:="=*XXX*"
' Add new sheet and rename it
Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "XXX_F"
'Copying needed information
Workbooks("XXX.xls").Worksheets("XXX").Range("A1:C1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
私は取得していますエラーが「ファイル名を指定して実行時エラー 『1004』:範囲クラスのSelectメソッドは失敗しました」で、下から3行目のを。私は、この行(私が最初に仕事をしたい、すなわち活性化ワークブック)を追加することによって、それを修正しようとした:私はそれを理解
Workbooks("XXX.xls").Worksheets("XXX").Range("A1:C1").Select
:よう
Workbooks("XXX.xls").Activate
はまた、私は、私のコードで明示的な参照を使用しました私のコードでは.Selectメソッドを使用しない方が良いです。しかし、このエラーが発生するのは初めてではなく、VBAのロジックを理解したいだけです。 Excelが理解しているように、私が参照しているシートは理解できませんが、理由を理解できません。ワークブックをアクティブにして(私はいくつかのワークブックを開いています)、明示的な参照を使用しています。このエラーがなぜ発生するのか(つまり、Excelが混乱する時点)を詳しく説明してください。非常に感謝します。
事前にお手数をおかけしていただきありがとうございます。
ちょうどヒント - Excelにはインスタンスと呼ばれるものがあります(Excel 2007以降を使用している場合)。私はあなたの場合、あなたは2つの事実を秀でていると思っています。それを修正するには、すべてのExcelファイルを閉じてから、コードを含むファイルとXXXを持つファイルをマウスのボタンをクリックするだけで開きます。 – Vityata
このエラーは、ワークシートをアクティブ化しているときに、そのシートで.selectメソッドを使用する前にワークシートをアクティブ化する必要があるために発生する可能性があります。したがって: 'ワークシート(" XXX ")。activate'あなたがこれをすでに言ったことを知っていますが、selectステートメントを使うよりもほとんど常に良い方法があることを忘れないでください。 – Jason
アクティブシート以外では何も選択できません。ベストプラクティスは、コードをリファクタリングして、*** Active *またはグローバルオブジェクトを使用しないようにすることです。あなたのオブジェクトへの参照を取得し、それらを代わりに使用します。 – Comintern