質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

10708閲覧

VBA:Rangeメソッドは失敗しました:Worksheet'オブジェクトのエラー

cream_pan

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/09/13 06:18

VBA初心者なのですが、VBAで条件分けをして条件を満たした時に、特定の範囲をコピーし、別シート("R1R2Flag")のA3から貼り付けをしたいです。

以下の様に試しましたが、★の部分で “Rangeメソッドは失敗しました:Worksheet'オブジェクト” というエラーメッセージが出ます。同じシート内ではコピペができるのですが、別シートに張り付けようとするとエラーがでるので、正しくシートが選択されるようにコピー元と貼り付け先のシート名を明記したのですが上手くいきません。

初歩的な質問で申し訳ありませんが、ご回答よろしくお願いします。

Sub フラグ立ってる部分を別シートにコピペ()

Application.ScreenUpdating = False

Dim i, k, j As Long Dim ws(1) As Worksheet Dim Flag As Integer Dim wb1 As Workbook Set wb1 = ThisWorkbook Set ws(0) = wb1.Worksheets("R1R2") Worksheets.Add(After:=ws(0)).Name = "R1R2Flag" Set ws(1) = wb1.Worksheets("R1R2Flag") i = 3 j = 3 Do Until ws(0).Cells(i, 1) = "" Flag = ws(0).Cells(i, 20) If Flag = 1 Then

★ ws(0).Range(Cells(i, 2), Cells(i, 21)).copy

  ws(1).Cells(j, 1).PasteSpecial Paste:=xlPasteAll

j = j + 1 End If i = i + 1 Loop

Application.ScreenUpdating = True

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Rangeの中に更にCellsを使用する場合、親となるワークシートの指定がポイントになります。
以下で、いかがでしょうか?

ws(0).Range(ws(0).Cells(i, 2), ws(0).Cells(i, 21)).Copy

また、単純なもぴーペーストであれば、次のように、Copyメソッドの引数Destinationに貼り付け先を指定する方法もあります。

ws(0).Range(ws(0).Cells(i, 2), ws(0).Cells(i, 21)).Copy Destination:=ws(1).Cells(j, 1)

投稿2021/09/13 06:43

hex309

総合スコア761

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cream_pan

2021/09/13 06:49

ワークシートの指定方法を教えていただき、ありがとうございます! エラーが解決し、無事貼り付けができました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問