- ベストアンサー
Excel VBAでエラーが出てしまう
Excel VBAで今現在選択しているシートから"春"というワークシートに移動して"A1"セルを選択しようとするプログラムを作ろうとしています。 Worksheets("春").Select Range("A1").Select ならできるんですけど、 Worksheets("春").Range("A1").Select ならエラーになります。 なぜなのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 初歩的な話なのですが、 Worksheets("春").Range("A1").Select 親オブジェクトとRangeオブジェクトをまとめて選択できるのは、 Worksheets("春") にある時だけです。目の前(Active)に存在しない、Rangeオブジェクトは直接は選択できません。 だから、 Application.Goto Worksheets("春").Range("A1") と書きます。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
http://officetanaka.net/excel/vba/speed/s2.htm のような記事を見つけました。 参考に。 例えばSheet1がアクチブであっても、値代入などなら Sub test02() Worksheets("Sheet3").Range("A1") = "aaa" Worksheets("Sheet3").Range("A3").Interior.ColorIndex = 6 End Sub が出来ます。
お礼
よくわかりました。 ありがとうございました。
春のワークシートが、 非Activeの状態で、選択しようとしているからでは? 下記のサイト参考 http://www.mccoy.jp/chie/zaitaku/excel/vba/vba3_1.html のRangeオブジェクトに対して SelectメソッドやActiveメソッドを使用する時には、 そのセルを含むシートがアクティブになっていなければなりません。
お礼
一度アクティブにしてからでないとダメなんですね。 とても参考になりました。 ありがとうございました。
どういうエラーが出ているんでしょう? (私の環境では、Worksheets("春").Range("A1").Selectでエラーにならないで"春"!A1が選択されます。)
お礼
できましたか? 私のパソコンでは(Excel 2002 Windows Xp) 「実行時エラー'1004': RangeクラスのSelectメソッドが失敗しました。」 と表示されます。
お礼
直接選択できるのはActiveシートだけなのですね。 よくわかりました。 ありがとうございました。