Excel VBA offset()関数で質問です。
現在集計のマクロを作成しております。
■処理内容
各sheetの特定の範囲を"copy" して集計sheetに順に貼り付け… といった処理をさせようと作成中です。
以下がソースになります。
Sub 集計()
Dim ws As Worksheet
i = 1
For Each ws In ActiveWorkbook.Sheets
If ws.Name = "集計" Then
Else
Range("E1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
★Worksheets("集計").Range("A1").Offset(, i).Select
ActiveSheet.Paste
i = i + 1
On Error Resume Next
ActiveSheet.Next.Select
End If
Next
End Sub
★マークのところで現在エラーになっています。
実行時エラー '1004':
RangeクラスのSelectメソッドが失敗しました。
と表示されます。
offset関数の使用方法の確認ですが… (とあるWebから抜粋したのですが… (^^; )
例>
Range("C3").Offset(,1).Selectとすれば、
行はそのままで、列が1列右に移動し、D3を選択します。
アドバイスよろしくお願い致します。
No.1ベストアンサー
- 回答日時:
これでいかがでしょうか?
Sub 集計()
Dim ws As Worksheet
i = 1
For Each ws In ActiveWorkbook.Sheets
If ws.Name = "集計" Then
Else
ws.Activate
ws.Range("E1").Select
ws.Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Worksheets("集計").Activate
Worksheets("集計").Range("A1").Offset(, i).Select
ActiveSheet.Paste
i = i + 1
On Error Resume Next
ActiveSheet.Next.Select
End If
Next
End Sub
※ .Activate は .Select でもいいです
複数シートを扱う場合は特に、シートの指定は省略しないで対象シートをアクティブにしないとエラーとなるようです。
シート指定は面倒がらず、省略せず指定するよう心がけるほうがいいと思います。
そのほうが後で見直すときにも対象がどこなのか分かりやすくていいと思います。
省略してしまうと自分で期待している動作をしているものと決め付けてしまい
ハマってしまうこともありますので・・・・・
コーディング上省略できる場合でも、省略しないほうが分かりやすい場合もありますので
時と場合に応じて理解しやすいコーディングとなるようにすると後で見直すときにも分かりやすいと思います。
参考URL:http://www6.plala.or.jp/MilkHouse/begin/contents …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
VBA 別ブックからの転記の高速...
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
VBAで変数の数/変数名を動的に...
-
ExcelVBAでDo Until loopのネス...
-
Changeイベントで複数セルへの...
-
VBA別シートの最終行の次行へ転...
-
VBA 実行時エラー1004 rangeメ...
-
VBA 重複チェック後に値をワー...
-
テキストボックスから、複数の...
-
vba 住所で判断して担当支店に...
-
GASでチェックボックスを一括of...
-
楽天RSSからエクセルVBAを使用...
-
ExcelのVBマクロを、バックグラ...
-
複数シートの複数列に入力され...
-
前回質問の続きになりますが、...
-
VBA Userformで一部別シートに...
-
VBAコードについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
VBA 別ブックからの転記の高速...
-
VBA別シートの最終行の次行へ転...
-
【VBA】特定の条件でセルをコピー
-
Count Ifのセルの範囲指定に変...
-
100万件越えCSVから条件を満た...
-
楽天RSSからエクセルVBAを使用...
-
VBAコードについて
-
Changeイベントで複数セルへの...
-
VBAで変数の数/変数名を動的に...
-
Excel2013で切り取り禁止
-
グラフマクロで系列を変数にす...
-
VBA 実行時エラー1004 rangeメ...
-
ExcelのVBマクロを、バックグラ...
-
Unionでの他のシートの参照につ...
-
Excel VBA オートフィルターで...
-
アクセスからエクセルへ出力時...
おすすめ情報