Excel2013 でマクロを作成しました。
シートインデックス3以降の複数のシートで処理を行うマクロを書いたのですが、
呼び出し先のマクロのみを実行するとエラーが出ないのに、
呼び出し元のマクロから実行するとエラーが出て先へ進めません。
◆エラー箇所は
「Range("1:" & d).Delete」
◆エラー内容は
「実行時エラー '1004':
'Range' メソッドは失敗しました: '_Global' オブジェクト」
◆やりたいこと
※1~2行目:項目行
3行目以降へ、上から1行ずつデータを上書きコピーして
最終行より上の行(1行目から最終行 -1行)を削除
以上をシート3以降の最終シートまで繰り返す
最終的には、残った1行をすべて「集計」シートに集約する予定です。
ご教示いただけますでしょうか。
’----------------------------
’呼び出し元マクロ
’----------------------------
Sub Aggregation()
Application.ScreenUpdating = False
Dim i As Long
For i = 3 To Worksheets.Count
Call Test
Next i
Application.ScreenUpdating = True
End Sub
’----------------------------
’呼び出し先マクロ
’----------------------------
Sub Test()
Dim LastROW As Long
Dim l As Long
Dim d As Long
LastROW = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For l = 3 To LastROW - 1
Rows(l).Copy
Rows(l).Offset(1).PasteSpecial Paste:=xlPasteValues, SkipBlanks:=True
Application.CutCopyMode = False
Next l
With ActiveSheet
d = .Cells(Rows.Count, 1).End(xlUp).Row - 1
Range("1:" & d).Delete
Rows(1).Select
End With
End Sub
No.2ベストアンサー
- 回答日時:
Sub Test()で作用するシートは、アクティブシートに対してだけです。
呼び出し元マクロで
For i = 3 To Worksheets.Count
Call Test
Next i
を行った時、同じシートがずっとアクティブの状態です。
その為、同じシートに対して、2回目のSub Test()を呼び出したとき、No1の方が指摘された状態になり、そこで
エラーが発生します。
これを避けるためには、①を追加してください。
該当シートをActivateにして呼び出します。
For i = 3 To Worksheets.Count
Worksheets(i).Activate '①・・・これを追加
Call Test
Next i
素敵です!出来ました!
該当シートをアクティブにしないから同じシートで再度行を消そうとしていたんですね…。
納得です。何故気づかなかったのか。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロを複数シートに実行する...
-
コマンドボタンがデザインモー...
-
エクセルを開いたとき常に同じ...
-
EXCELでワークシートを開いたら...
-
【 Excel】シートの見出しに自...
-
エクセルで回数をカウントする...
-
エクセルでシートの並び替えで...
-
VBA シート名を先月の名前に...
-
VBAで作るexcel検索窓
-
エクセルシート内での閲覧制限
-
VBAで条件によってシート見出し...
-
EXCELのエラー
-
エクセルの複数のワークシート...
-
マクロを特定の複数シートで実...
-
エクセルで串刺ししたシートの...
-
エクセル2010 マクロを実行す...
-
ExcelのSheetに作られたMacro1...
-
全てのシートから特定文字を含...
-
Excel:複数シートから条件に合...
-
シートを保護した時でも並べ替...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
EXCELでワークシートを開いたら...
-
エクセルを開いたとき常に同じ...
-
VBAで条件によってシート見出し...
-
EXCELでマクロを使わずに図形の...
-
マクロを特定の複数シートで実...
-
エクセルでシートの並び替えで...
-
エクセルの複数のワークシート...
-
複数シートの保護・解除
-
エクセルで複数のSheetを一括フ...
-
エクセルで回数をカウントする...
-
EXCELのエラー
-
Excel:複数シートから条件に合...
-
VBA シート名を先月の名前に...
-
EXCELの起動時に常に同じ...
-
Excelで,特定のシートを開いた...
-
Excelのマクロの呼び出し元を知...
-
メッセージボックスでシート名...
おすすめ情報