
『実行時エラー'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で質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA Ifでシート名が合...
-
Excelマクロのエラーを解決した...
-
VBAでオブジェクト変数にsetし...
-
【Excel VBA】Worksheets().Act...
-
【VBA】全ての複数シートから指...
-
excelのマクロで該当処理できな...
-
vba 環境依存文字がListViewボ...
-
Access エクセルシート名変更
-
【Excel VBA】全シートのデータ...
-
エクセル・マクロ シートの非...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
vbaエクセルマクロ RemoveDupli...
-
【VBA】指定した検索条件に一致...
-
VBAマクロでシートコピーした新...
-
ユーザーフォームに入力したデ...
-
Excelの特定のシートのみ削除・...
-
リンク貼り付けをマクロで簡素...
-
オートシェイプの文字が更新さ...
-
EXCELVBAを使ってシートを一定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
実行時エラー1004「Select メソ...
-
特定の文字を含むシートだけマ...
-
XL:BeforeDoubleClickが動かない
-
【ExcelVBA】全シートのセルの...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【Excel VBA】Worksheets().Act...
-
エクセルVBA Ifでシート名が合...
-
Excel チェックボックスにチェ...
-
シートが保護されている状態で...
-
Excel VBA リンク先をシート...
-
ブック名、シート名を他のモジ...
-
ExcelのVBAのマクロで他のシー...
-
同じ作業を複数のシートに実行...
-
エクセルのシート名変更で重複...
-
VBA 検索して一致したセル...
-
【VBA】色のついたシート名を取得
-
VBAで指定シート以外の選択
おすすめ情報