
こんばんは。
タイトルの通り、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(エクセル)
-
VBA 実行時エラー1004 rangeメソッドは失敗しました。globalオブジェクトのエラー
Excel(エクセル)
-
Worksheets メソッドは失敗しました。のエラー処理のやり方
Visual Basic(VBA)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
'Range'メソッドは失敗しました
Excel(エクセル)
-
6
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
7
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
8
エクセルマクロエラー「'Cells'メソッドは失敗しました。'_Global'オブジェクト」について
Excel(エクセル)
-
9
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
10
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
11
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
12
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
13
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
14
別のシートから値を取得するとき
Visual Basic(VBA)
-
15
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
18
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
-
19
VBAで文字列を数値に変換したい
Excel(エクセル)
-
20
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで条件に一致したセル...
-
日付が未入力の際はゼロか、空...
-
(Excel)あるセルに文字を入力...
-
別シートのセルを絶対参照にする
-
Excelの「0」だけ非表示、小数...
-
エクセルで1月0日と表示される!!
-
Rangeメソッドは失敗しました。...
-
エクセルで複写のように自動入...
-
複数シートの同じセル内容を1シ...
-
Excelシートの保護時にデータの...
-
エクセルのシート間で連続した...
-
Excel 計算式の中で使っている...
-
シート参照で変数を使いたい(EX...
-
エクセル ハイパーリンクで画像...
-
エクセルでセルが指定できない
-
エクセルのセルに、マウスで選...
-
Excelのファイル容量が減らない...
-
EXCEL関数でシート名が変わる可...
-
ExcelでTODAY関数を更新させな...
-
労基法の週40時間を超える時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで条件に一致したセル...
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
(Excel)あるセルに文字を入力...
-
エクセルで1月0日と表示される!!
-
別シートのセルを絶対参照にする
-
Rangeメソッドは失敗しました。...
-
複数シートの同じセル内容を1シ...
-
エクセルで複写のように自動入...
-
ExcelでTODAY関数を更新させな...
-
Excelシートの保護時にデータの...
-
エクセル ハイパーリンクで画像...
-
シート参照で変数を使いたい(EX...
-
エクセルで、加筆修正したセル...
-
Excelのファイル容量が減らない...
-
エクセルで別シートからの最大...
-
Excelで複数シートの選択セルを...
-
エクセルでセルが指定できない
-
エクセルのセルに、マウスで選...
-
EXCEL関数でシート名が変わる可...
おすすめ情報