質問: なぜThisWorkbook.Worksheets(1).Range("A1").Selectはダメなのでしょうか?
回答: Activeなシートが ThisWorkbookの他のシート 他のブックのシート の場合は、直接他のシートから別のシートのセルを選択できません。 アクティブでない最上位のオブジェクトから、アクティブにしていかなければいけません。 手動でExcelを操作するときにも同じ手順を踏むはず。それと同じこと。 (標準モジュールに書かれたプログラムとして説明しています) たとえば、 Thisworkbook.Activate Worksheets(1).Activate .Range("A1").Select といった感じ。 1つの命令で済ますのであれば、 Application.Goto Reference:="[Book1.xlsx]Sheet1!R1C1" といった方法を採ります。 《余談》 VBAでは、Select・Activateなどのメソッドを使用せずにプログラミングはできます。 たとえば、 Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("B4").Select ActiveSheet.Paste は、 Range("A1").Copy Sheets("Sheet2").Paste Range("B4") と書き換えできます。 Select・Activateなどのメソッドの使用は、処理速度低下の原因の一つ。 また、プログラムが長くなる、読みにくくなるなど、良いことは一つもありません。 これらのメソッドを使用しないコーディング法を身に着けてください。