
こんばんは。
タイトルの通り、1004エラーが出て苦戦しています。
タイトルのエラーはシート名がしっかり入力されてないと出るエラーのようですが、試行錯誤した結果、解決には至らなかったのでご教授頂けると幸いです。
Sub テスト()
Dim Ws As Worksheet
Dim A As Range
Set A = Range("A1").End(xlDown)
Set A = A.Offset(0, 18)
For Each Ws In Worksheets
Ws.Activate
Range("A1", A).Copy ⇒ここでエラー
Range("A30").PasteSpecial xlPasteAll
Next Ws
End Sub
For Eachを使い、すべてのシートに適用する事が目的です。
教えて頂きたい事は2つです。
①、sheet1以外をアクティブにしてマクロを回すと、最初からRange("A1", A).Copyで1004エラーが出ます。
②、sheet1をアクティブにしてマクロを回すとsheet1は実行されますが、sheet2に移った時に1004エラーが出ます。
よろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
こんばんは。
下記で、どうでしょうか?
Sub テスト()
Dim Ws As Worksheet
For Each Ws In Worksheets
Ws.Activate
Range("A1:S" & Range("A1").End(xlDown).Row).Copy
Range("A30").PasteSpecial xlPasteAll
Next Ws
End Sub
1つ注意点としては、セルのA2にデータがないと、エラーになってしまう
様な気がします。
Range("A1:S" & Range("A1").End(xlDown).Row).Copy
⇒こんなやり方があるんですね…自分では思いつけなかったです。
ありがとうございます。動作確認いたしました。感謝いたします。

No.4
- 回答日時:
第1引数、第2引数共に変数にするのがスマートなのでは。
No.3
- 回答日時:
記述されているコードから何をしたいのか読み取れませんが
Range や Worksheets をいきなり書くのはダメです。
Worksheets は Workbook オブジェクトのインスタンスを指定する必要があります。
Workbook オブジェクトは ThisWorkbook.Worksheets や ActiveWorkbook.Worksheets 等、
操作しようとしている対象のインスタンスを指定します。
Range は Worksheet オブジェクトのインスタンスを指定する必要があります。
For Eachですべてのシートに何かするのであれば
そこで指定している Ws を指定することになるでしょうか。
Excelマクロは本来必要なものを省略しても半端に動いてしまうところがあり、それが罠のようになっていたります。
どのブックのどのシートに対しての処理なのか明示的に記述するようにしましょう。
ご回答ありがとうございます。
Range や Worksheets をいきなり書くのはダメです。
⇒そうなんですね。インスタンスという言葉も初めて聞きました。
どのブックのどのシートに対しての処理なのか明示的に記述するようにしましょう。
⇒ありがとうございます!明示的に記述するようにいたします。

No.2
- 回答日時:
Range("A1", A).Copy の場合、
省略されているものをそのまま指定すると
ActiveSheet.Range("A1", A).Copy になります。
つまり、”A1” はActiveSheet の[A1]であり、
第2引数の A は Ws.Activate を実行する前にActiveであった
Sheet1 の セルになります。
第1引数のセルのシートと
第2引数のセルのシートが異なるため
エラーになっています。
ご回答ありがとうございます。
ActiveSheet.Range("A1", A).Copy になります。
⇒ご説明ありがとうございます。勉強になります。
第1引数のセルのシートと
第2引数のセルのシートが異なるため
エラーになっています。
⇒こちらを回避するには、先にシートを明示すれば良いということでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
マクロの「Rangeメソッドは失敗しました’Globalオブジェクト」エラーの解決方法について
Excel(エクセル)
-
Worksheets メソッドは失敗しました。のエラー処理のやり方
Visual Basic(VBA)
-
VBA 実行時エラー1004 rangeメソッドは失敗しました。globalオブジェクトのエラー
Excel(エクセル)
-
-
4
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
5
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
9
'Range'メソッドは失敗しました
Excel(エクセル)
-
10
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
11
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
12
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
VBAでEmpty値って何ですか?
Excel(エクセル)
-
15
UserForm1.Showでエラーになります。
工学
-
16
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
17
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
18
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
19
エラーコード1004
Visual Basic(VBA)
-
20
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Office2021のエクセルで米国株...
-
Excelで複数シートの選択セルを...
-
Excelの「0」だけ非表示、小数...
-
エクセルで1月0日と表示される!!
-
Excelシートの保護時にデータの...
-
エクセル複数シート(1年)に1...
-
エクセルで条件に一致したセル...
-
ExcelでTODAY関数を更新させな...
-
マクロ 新しいシートにデータ...
-
Excelでスクロールすると文字が...
-
日付が未入力の際はゼロか、空...
-
EXCELのハイパーリンクのセルを...
-
EXCEL関数でシート名が変わる可...
-
シート参照で変数を使いたい(EX...
-
VBA Excel セル残像が残る
-
エクセルで、加筆修正したセル...
-
別シートのセルを絶対参照にする
-
エクセルで複写のように自動入...
-
EXCEL ハイパーリンク先を表示...
-
(Excel)あるセルに文字を入力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Office2021のエクセルで米国株...
-
Excelの「0」だけ非表示、小数...
-
エクセルで条件に一致したセル...
-
Excelで複数シートの選択セルを...
-
エクセルについて
-
エクセルで1月0日と表示される!!
-
Excelシートの保護時にデータの...
-
日付が未入力の際はゼロか、空...
-
ExcelでTODAY関数を更新させな...
-
EXCELのハイパーリンクのセルを...
-
エクセルで、加筆修正したセル...
-
Excelでスクロールすると文字が...
-
複数シートの同じセル内容を1シ...
-
マクロ 新しいシートにデータ...
-
別シートのセルを絶対参照にする
-
ハイパーリンク で『指定された...
-
iPhoneのExcelアプリで、別のシ...
-
エクセルで複写のように自動入...
-
エクセルで指定のセルのみ完全...
-
エクセル ハイパーリンクで画像...
おすすめ情報