こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBAでエラーが出てしまう

Excel VBAで今現在選択しているシートから"春"というワークシートに移動して"A1"セルを選択しようとするプログラムを作ろうとしています。

Worksheets("春").Select
Range("A1").Select

ならできるんですけど、

Worksheets("春").Range("A1").Select

ならエラーになります。
なぜなのでしょうか?

投稿日時 - 2008-11-07 19:29:40

QNo.4460935

困ってます

質問者が選んだベストアンサー

こんばんは。

初歩的な話なのですが、

Worksheets("春").Range("A1").Select

親オブジェクトとRangeオブジェクトをまとめて選択できるのは、
Worksheets("春") にある時だけです。目の前(Active)に存在しない、Rangeオブジェクトは直接は選択できません。

だから、

Application.Goto Worksheets("春").Range("A1")

と書きます。

投稿日時 - 2008-11-07 21:22:20

お礼

直接選択できるのはActiveシートだけなのですね。
よくわかりました。
ありがとうございました。

投稿日時 - 2008-12-30 19:37:14

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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
が出来ます。

投稿日時 - 2008-11-08 11:57:10

お礼

よくわかりました。
ありがとうございました。

投稿日時 - 2008-12-30 19:36:15

春のワークシートが、
非Activeの状態で、選択しようとしているからでは?

下記のサイト参考
http://www.mccoy.jp/chie/zaitaku/excel/vba/vba3_1.html

のRangeオブジェクトに対して
SelectメソッドやActiveメソッドを使用する時には、
そのセルを含むシートがアクティブになっていなければなりません。

投稿日時 - 2008-11-07 19:41:59

お礼

一度アクティブにしてからでないとダメなんですね。
とても参考になりました。
ありがとうございました。

投稿日時 - 2008-11-07 20:04:39

ANo.1

どういうエラーが出ているんでしょう?

(私の環境では、Worksheets("春").Range("A1").Selectでエラーにならないで"春"!A1が選択されます。)

投稿日時 - 2008-11-07 19:38:00

お礼

できましたか?
私のパソコンでは(Excel 2002 Windows Xp)

「実行時エラー'1004':
RangeクラスのSelectメソッドが失敗しました。」

と表示されます。

投稿日時 - 2008-11-07 20:03:56

あなたにオススメの質問