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

解決済みの質問

VBAで行をコピーして別のシートに貼付け

いつもお世話になっております。

現場登録検索のシートの数値F2の値が
一覧シートにマッチする行を検索し
その行を切り取り、終了現場に入力されている
最終行に貼付ける。と言うVBAを作りましたが、
"RangeクラスのSelectメソッドが失敗しました。"
下記が黄色になります。

Sheets("終了現場").Range("A1").Select
解決ができません。
アドバイスをお願い致します。


Private Sub CommandButton7_Click()

'終了ボタン

'終了行を一覧から探す

Worksheets("現場登録検索").Range("F2").Select
ActiveCell.FormulaR1C1 = "=MATCH(RC[-1],一覧!C[-5],0)"
n = ActiveCell.Value

行 = n

Worksheets("一覧").Rows(行).Copy

Sheets("終了現場").Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False


End Sub

投稿日時 - 2005-06-05 01:46:59

QNo.1429894

すぐに回答ほしいです

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

No.1です。

>ActiveSheets.Paste
>がエラーになります。

ActiveSheets になっているのなら ActiveSheet にしてください。

ついでに訂正です(エラーとは関係ありませんが・・)。
-------------------------------------
Sheets("終了現場").Activate
Sheets("終了現場").Range("A1").Select
-------------------------------------
 ↓
-------------------------------------
Sheets("終了現場").Activate
Range("A1").Select
-------------------------------------
Range("A1") の前の Sheets("終了現場")が余計でした。

または↓
-------------------------------------------
Sheets("終了現場").Activate
Range("A1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
-------------------------------------------
こちらで試しましたが処理は正常に終わります。
そのままコードをコピーして貼り付けてみてください。
*
もうひとつ、ついでに
Copy メソッドの引数に転送先を指定する方法もあります。
行 = n のあとに↓
(Copy のあとに半角スペース+アンダースコア( _ ) で改行しています)
--------------------------------------------
Worksheets("一覧").Rows(行).Copy _
Destination:=Worksheets("終了現場").Range("A1").End(xlDown).Offset(1, 0)

Worksheets("終了現場").Select

End Sub
--------------------------------------------
これだと
ActiveSheet.Paste
Application.CutCopyMode = False
は不要です。

投稿日時 - 2005-06-05 03:29:03

お礼

Worksheets("一覧").Rows(行).Copy _
Destination:=Worksheets("終了現場").Range("A1").End(xlDown).Offset(1, 0)
Worksheets("終了現場").Select

ありがとうございました。
上記の方ではうまく動きました。

おかげさまで、日常の業務がスムーズに運びます。<m(__)m>

VBAは便利なのですが
私にはなかなか難しく・・・。
勉強になります。
これからもよろしくお願い致します。

投稿日時 - 2005-06-05 13:39:38

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

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

回答(2)

ANo.1

こんばんは。

Sheets("終了現場").Range("A1").Select

の前に

Sheets("終了現場").Activate

を入れてみてください。

-------------------------------------
Sheets("終了現場").Activate
Sheets("終了現場").Range("A1").Select
-------------------------------------

投稿日時 - 2005-06-05 02:15:58

補足

さっそくのお返事ありがとうございます。<m(__)m>

Sheets("終了現場").Activate
を入力しました。

すると今度は
ActiveSheets.Paste
がエラーになります。
以前はうまくいったのですが。。。

投稿日時 - 2005-06-05 02:49:05

あなたにオススメの質問