
Rangeを指定するのに、
Workbooks("abc").Sheets("Sheet1").Range("A1").Select
と言う風に指定したいのですが、これを行なうと
--------------------------------------------
実行時エラー '1004':
RangeクラスのSelectメソッドが失敗しました。
--------------------------------------------
となってしまう為、いつもわざわざ下記のようにしています。
Workbooks("abc").Activate
Sheets("Sheet1").Select
Range("A1").Select
Selectだけでなく、Copyの貼り付け等の時も同様で
かなりの手間と、コードの長さになってしまっています。
どこかの設定を変えると出来たりするのでしょうか?
又、他に良い方法がありましたらお教え下さい。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
Wendy02です。>Workbooks("abc").Sheets("Sheet1").Range("A1").Select
こうしたコンテナタイプの書き方は、本来は有効なのですが、ここで示されているRangeプロパティは、Worksheet オブジェクトの配下になっている関係で、Activateされていない場所のものは、Selectできないのです。
Application.Goto Workbooks("abc.xls").Sheets("Sheet1").Range("A1")
とすればよいことですが、しかし、こういう場面に出会うということは、そんなに多いものではないのです。実際、Select すること自体は、最終のシートやセルをActive にさせる以外は必要がないのです。
>Selectだけでなく、Copyの貼り付け等の時も同様で
>かなりの手間と、コードの長さになってしまっています。
Copy の時は、Destination をあわせるだけでよいのですが、コンテナタイプの書き方をすれば、
ActiveSheet.Range("A1").Copy Workbooks("abc.xls").Sheets("Sheet1").Range("A1")
でよいわけです。
Wendy02さん、こんにちは!いつもありがとうございます!!
お礼が遅くなってしまい、申し訳ありません。
>こうしたコンテナタイプの書き方は、本来は有効なのですが、
>ここで示されているRangeプロパティは、Worksheet オブジェクトの配下になっている関係で、
>Activateされていない場所のものは、Selectできないのです。
へぇー、そうだったんですね!またまた1つ賢くなりました。
>ActiveSheet.Range("A1").Copy Workbooks("abc.xls").Sheets("Sheet1").Range("A1")
これを、有難く有効に使わせて頂くことにしました。
本当にいつもいつも助かっています。
ありがとうございました!
No.2
- 回答日時:
こんにちは。
KenKen_SP です。【Wendy02 さんのコメントより引用】
> 実際、Select すること自体は、最終のシートやセルをActive
> させる以外は必要がないのです。
私も同感です。Select や Activate が本当に必要なケースは
ごくわずかです。
例えば、A1セルに数字の値を入力したいなら、
Workbooks("abc").Activate
Sheets("Sheet1").Select
Range("A1").Select
ActiveCell.Value = 10
みたいなコードになるわけですが、#1 で Wendy02 さんが解説され
た理由で Select に失敗するのであれば、
Workbooks("abc").Sheets("Sheet1").Range("A1").Value = 10
と書いても求める結果は一緒です。Select メソッドで失敗するなら、
Select しなければ良い、、、といったところでしょうか。
無論 Select してからでないと失敗するメソッドがあり、それらは
例外となりますが。
> ...かなりの手間と、コードの長さになってしまっています。
そのために Set ステートメントや With ステートメントがあります。
例)
Dim SH as Worksheet
Set SH = Wrokbooks("abc").Sheets("Sheet1")
で、以降 SH.Range("A1") と書けば、
Wrokbooks("abc").Sheets("Sheet1")..Range("A1")
と同意になります。
KenKen_SPさん、早速ご回答ありがとうございました!
お礼が遅くなってしまい、申し訳ありません。
>Select メソッドで失敗するなら、
>Select しなければ良い、、、といったところでしょうか。
そうなんですよね、私もSelectしない方が処理も早くなるし
Selectせずに進めたいのですが、なかなかうまく行かない時があったりして、頭を悩ませています。。。
それが
>無論 Select してからでないと失敗するメソッドがあり、それらは
>例外となりますが。
の時なのでしょうかね?!
>そのために Set ステートメントや With ステートメントがあります。
>(中略)
>Dim SH as Worksheet
>Set SH = Wrokbooks("abc").Sheets("Sheet1")
>で、以降 SH.Range("A1") と書けば、
>Wrokbooks("abc").Sheets("Sheet1")..Range("A1")
>と同意になります。
ありがとうございます!
この辺りは初心者の私でもなんとか知っている範囲でしたので
できるだけ使うようにしているのですが
まだまだ、効率の悪いコードになっていることであろうと
情けなく思っています。
これから色々勉強して行きたいと思っています。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カレーの作り方
-
トマトジュースの消費期限
-
味の素の冷凍餃子を食べたら冷...
-
数の子天井は好きですか?
-
鶏がらスープの元と中華だしの違い
-
野菜ジュース、開封して冷蔵庫...
-
顆粒チキンスープの素ってなに?
-
味の素について 味の素色んな種...
-
Q. マルちゃん 黒い豚カレーの...
-
24時間水につけた米はまずい…で...
-
パンとごはんについて
-
ピュアセレクトマヨネーズとキ...
-
味の素の味を感じられません。
-
イカリソースは消えたのか
-
冷凍餃子を冷蔵庫に入れても明...
-
米5kgからコンビニおにぎり何...
-
キャベツを剥いても剥いても葉...
-
餃子の具が固くなってしまいます
-
食べるの忘れていて3日消費期限...
-
3〜5ヶ月前に冷凍したハンバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
味の素の冷凍餃子を食べたら冷...
-
トマトジュースの消費期限
-
数の子天井は好きですか?
-
顆粒チキンスープの素ってなに?
-
もつ鍋に海鮮食品は合うでしょ...
-
野菜ジュース、開封して冷蔵庫...
-
味の素の味を感じられません。
-
冷凍餃子を冷蔵庫に入れても明...
-
化学調味料で、いちばん効くのは?
-
24時間水につけた米はまずい…で...
-
お寿司屋さんや居酒屋のカウン...
-
味の素について 味の素色んな種...
-
ペヤングに入ってる茶色の丸い...
-
永谷園のごはんですよ、冷蔵庫...
-
味の素の賞味期限
-
えっ、そうなんですか~
-
味の素ってなんで親の仇みたに...
-
私は切実な思いがあります。 何...
-
市販の焼肉のタレで好きなのは...
-
パンとごはんについて
おすすめ情報