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

解決済みの質問

VBA初心者です。

VBA初心者です。
Excel 2010のVBAで、
ワークシートのSheet1のオブジェクトモジュールに
他のシートから別のシートにコピー&ペーストをしたいと思い、
以下のプログラムの記述をすると、
アプリケーション定義またはオブジェクトの定義エラーとなってしまいます。

Worksheets("Sheet2").Range(Cells(1, 7), Cells(d, 8)).Copy Destination:=Worksheets("Sheet3").Cells(3, 1)

(「d」は変数です。セルの範囲指定は、実際に記述するときは
範囲が広範になるので、行数列数で把握できるようにCellsを使っています)
エラーになる理由と解決法をご教授いただければと思います。

投稿日時 - 2010-06-25 07:54:24

QNo.5993551

困ってます

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

誰もが最初に間違える:
Worksheets("Sheet2").Range(Cells(1, 7), Cells(d, 8)).Copy …

正しくは:
Worksheets("Sheet2").Range(Worksheets("Sheet2").Cells(1, 7), Worksheets("Sheet2").Cells(d, 8)).Copy …


実際には:
with Worksheets("Sheet2")
 .range( .range("G1"), .cells(d, 8)).copy destination:=worksheets("Sheet3").cells(3, 1)
end with

投稿日時 - 2010-06-25 08:41:04

お礼

Rengeの括弧の中で記述しているCellsには、改めてどこのオブジェクトか指定しなければならないのですね。教えていただいて、そういうことだったのか、と思わず納得してしまいました。プログラムの文頭のWorksheets("Sheet2")で、後に述べられる括弧で区切られた中にあるCellsもWorksheets("Sheet2")に指定されていると思っていたのですが、違ったのですね。
セルの「A1」形式だと列番号が数字でないので把握しづらくて、わたしはよくCellsを使っているのですが、HPとかだと例が「A1」形式の例が多くて、今回のようにCellsで範囲指定する例というのはなかなか見つけられないでいました(ただわたしが探し方がヘタクソなのかもしれませんが)。
ココの質問箱は初めて使用したのですが、思い切って質問してみて助かりました。ご回答がいただけたことに感謝いたします。

投稿日時 - 2010-06-25 09:40:30

ANo.1

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

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

回答(4)

ANo.4

#1さんの回答の補足です。

Worksheets("Sheet2").Range(○, △)

は Sheet2 のセル範囲を指定しようとしているので、○と△を Sheet2 以外のセルにすることはできません。

Worksheets("Sheet2").Range(Cells(1, 7), Cells(d, 8))

この場合の Cells(1, 7) や Cells(d, 8) は、アクティブシートの Cells(1, 7) や Cells(d, 8) を意味します。
Sheet2がアクティブな状態で、このコードが実行されるときは、問題なく動きます。
しかし、Sheet2以外がアクティブな状態では、エラーになってしまします。

エラーになっているということは、Sheet2以外がアクティブになっているのでしょう。

投稿日時 - 2010-06-25 09:05:51

ANo.3

良くある質問です。
Googleで「range cells エラー」ででも照会すること。
下記とそっくりでは。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1112011581
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200_070.html
など。

投稿日時 - 2010-06-25 09:00:33

ANo.2

次のようにされてはいかがでしょう。

Worksheets("Sheet2").Range(Cells(1, 7), Cells(d, 8)).Copy
Worksheets("Sheet3").Cells(3, 1).select
ActiveSheet.Paste

投稿日時 - 2010-06-25 08:59:22

あなたにオススメの質問