質問するログイン新規登録
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

2回答

2947閲覧

VBA_複数シートを対象にして実行するには

misato03

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/07/08 04:11

0

0

前提・実現したいこと

①エクセルシート内の指定列が0だった場合、その行ごと削除
②①の実行を複数シート対象にして行いたい

発生している問題・エラーメッセージ

1シート内での実行はうまくいくのだが、複数シートにまたがって実施されない

該当のソースコード

Sub 特定行削除()
Dim i As Long
For i = 31 To 2 Step -1
If Cells(i, 3).Value = 0 Then
Rows(i).Delete
End If
Next i
End Sub

試したこと

上記マクロを作成し実行

補足情報(FW/ツールのバージョンなど)

現在のエクセルの状態:
1シート目:元データを張り付ける場所(A)
2シート目:(A)を読み込み、成型する場所
3シート目以降、2シート目と同じ内容で(A)の読み込み行を変えた成型シート
~現在15シート目まである

2~15シート目までの、各シート内容イメージ:
A    B    C
1 氏名 (空欄) あああ 
2 年齢 (空欄) 32
3 性別 (空欄) 女
4 その他(空欄) 0

30 備考 (空欄) 0

↑このようなデータがあった場合、C列に0が入った、3行目と30行目を削除したい

現在2シート目でマクロ編集画面を起動させて上記コードを記載して実行したところ、2シート目は処理がうまくいったのですが、3シート目以降は未反映。
複数シートを対象として実行できる記述方法が知りたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

以下参考
ブック内のすべてのワークシートをループするマクロ

「excel シート 繰り返し」でググるともっと参考になるものが見つかります。

投稿2019/07/08 04:51

sazi

総合スコア25430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

misato03

2019/07/08 06:32

繰り返し、がこの手の処理の表現ワードになるんですね!助かりました。 「エクセル マクロ シート 一括処理」みたいなワードで探していたのですが見つけられずにおりました。ありがとうございます、見てみます
guest

0

ベストアンサー

Rows(i).Delete というようにシートを指定していない場合は、アクティブなシートを対象に操作することになります。
現状の特定行削除マクロを活かすなら、ループでアイティブなシートを変更しつつ、提示のマクロを実行すればいいでしょう。

VBA

1Public Sub Test() 2 Dim i As Long 3 For i = 1 To Worksheets.Count 4 Worksheets(i).Activate 5 Call 特定行削除 6 Next 7End Sub

ただ、アイティブなシートを対象とした処理は遅いし、バグの原因になりかねないので、処理の対象シートを指定するコードを推奨します。例えば下記のように引数で対象シートを指定するといいでしょう。

vba

1Sub 特定行削除(対象シート As Worksheet) 2 Dim i As Long 3 For i = 31 To 2 Step -1 4 If 対象シート.Cells(i, 3).Value = 0 Then 5 対象シート.Rows(i).Delete 6 End If 7 Next i 8End Sub 9 10Public Sub Test() 11 Dim i As Long 12 For i = 1 To Worksheets.Count 13 Call 特定行削除(Worksheets(i)) 14 Next 15End Sub

投稿2019/07/08 04:49

編集2019/07/08 04:51
hatena19

総合スコア34367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

misato03

2019/07/08 06:34

詳細な記述までありがとうございます!一度貼り付けて試してみます。 解説もありがとうございます、これで記述内容も理解していけそうです。一度試してきます。
misato03

2019/07/17 13:21

ひとつめに頂いた記述を書き足したことでうまく複数シートを一括で処理かけることができました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問