『実行時エラー'1001': 'Range'メソッドは失敗しました:'_Worksheet'オブジェクト』
先週から仕事に必要なためVBAの勉強を始めましたが、別シートへコピーする際などに上記のエラーが発生してしまい原因が分からず困っています。どこが間違っているのでしょうか??
処理はデータが書かれているシートから作業用のシートにセル範囲を指定してコピーする、というものです。
なお、マクロ自体は別にマクロ用ファイルを作成し、そこのシートモジュールへ記述しています。
よろしくお願いします。
Sub test()
'--------- 対象ファイルの呼び出し
Dim MAIN As Workbook
Dim ws As Worksheet
Dim sh As String
'ファイルを呼び出す
Call GetMAINFile
Set MAIN = ActiveWorkbook
Set ws = MAIN.Worksheets(1)
sh = ws.Name
'--------- 一時作業用TEMPシートの作成
Dim TEMP As Worksheet
Worksheets.Add(after:=ws).Name = "TEMP"
Set TEMP = Worksheets("TEMP")
'--------- 対象シートから一時作業用TEMPシートへデータのコピー
Dim x1, x2, y1, y2 As Integer
x1 = 5
x2 = 10
y1 = 1
y2 = 4
ws.Range(Cells(x1, y1), Cells(x2, y2)).Copy _
Destination:=TEMP.Range(Cells.SpecialCells(xlLastCell).Row, 1)
End Sub
'--------- ファイル名を指定ダイアログの表示
Sub GetMAINFile()
Dim NewBook As Workbook
Dim OpenFileName As String
OpenFileName = Application.GetOpenFilename()
If OpenFileName <> "False" Then
Workbooks.Open OpenFileName
Else
Exit Sub
End If
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
以下のように変更が必要です。
ws.Range(Cells(x1, y1), Cells(x2, y2)).Copy _
Destination:=TEMP.Range(Cells.SpecialCells(xlLastCell).Row, 1)
↓
Range(ws.Cells(x1, y1), ws.Cells(x2, y2)).Copy _
Destination:=Cells(TEMP.Cells.SpecialCells(xlLastCell).Row, "A")
補足説明)
・Cells(x1, y1)
これを明示的にするとActiveSheet.Cells(x1, y1) になります。
よってws.Range(Cells(x1, y1), Cells(x2, y2))を明示的にすると
ws.Range(ActiveSheet.Cells(x1, y1), ActiveSheet.Cells(x2, y2)) または
ws.Range(TEMP.Cells(x1, y1), TEMP.Cells(x2, y2))
になります。
ws.RangeとTEMP.Cells(x1, y1)はシートが違うためにエラーとなっています。
・TEMP.Range(Cells.SpecialCells(xlLastCell).Row, 1)
これを数字に直してみると
TEMP.Range(1, 1)
となってしまい明らかに間違っています。
TEMP.Cells(1, 1)またはTEMP.Cells(1, "A")にする必要があります。
※列は"A"のように列名で指定した方が分かりやすいかと思います。
気になる点)
Worksheets("TEMP")は毎回作成しているので、空シートだと思います。
TEMP.Cells.SpecialCells(xlLastCell).Row と最後の行を取得しなくても
必ず「1」だと思いますが…
もし私の勘違いで間違った指摘かも知れませんが…
的確なご指摘ですね!非常に勉強になりました。
・Cells(x1, y1)
cellsプロパティの前に省略されたRangeオブジェクトがあるということですね。
・TEMP.Range(Cells.SpecialCells(xlLastCell).Row, 1)
ご指摘の通り文法がおかしかったです。
Cells.SpecialCells(xlLastCell).Rowを使っているのは、
実は質問文に記載した処理以外で、FINDで検索した結果から繰り返して別シートへコピーさせたかったからです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
同じ作業を複数のシートに実行...
-
特定の文字を含むシートだけマ...
-
【Excel VBA】Worksheets().Act...
-
XL:BeforeDoubleClickが動かない
-
excelのマクロで該当処理できな...
-
VBAで指定シート以外の選択
-
Excelマクロのエラーを解決した...
-
ExcelVBA シート名を複数セルか...
-
VBAでオブジェクト変数にsetし...
-
ExcelのVBAのマクロで他のシー...
-
実行時エラー'1004': WorkSheet...
-
シートが保護されている状態で...
-
エクセルのマクロについて教え...
-
セルのコピーで「オブジェクト...
-
VBA 存在しないシートを選...
-
エクセル・マクロ シートの非...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報