質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

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

Q&A

解決済

1回答

648閲覧

VBAでのループ処理に関して

Fetherion

総合スコア60

VBA

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

0グッド

0クリップ

投稿2021/09/20 02:29

##はじめに
1ブック内に複数シートがある状態で、同じ処理を行いたい。
これに関してはすべてを選択済みにし、1シートで処理を行えばというのはわかりますが、
一部データによる行数の違いなどもあり、削除等をする際にどうしてもその方法ではうまくいかないため、
シートを切り替えながら同じ処理を1シートごと行いたいと思っています。

##現在のコード

VBA

1Sub TestMethod() 2 //すべてのシートを選択した上で処理していく方法にしてみました。 3 For Each sh In ActiveWindow.SelectedSheets 4 //今のシートが何か表示させてみました。 5 MsgBox sh.Name 6 //共通処理としてF列を削除しました。 7 sh.Range("F:F").Delete 8 Next 9End Sub

次にF列を削除したあとは特定のセルに検索する値がある場合をの行を削除するというのを入れようと思って

VBA

1Sub TestMethod() 2 //すべてのシートを選択した上で処理していく方法にしてみました。 3 For Each sh In ActiveWindow.SelectedSheets 4 //今のシートが何か表示させてみました。 5 MsgBox sh.Name 6 //共通処理としてF列を削除しました。 7 sh.Range("F:F").Delete 8 9 For i = Range("A1").End(xlDown).Row To 2 Step -1 10  With Cells(i, "A") 11   If _ 12    .Value Like "合計*" Or _ 13    .Value Like "小計*" Then 14    .EntireRow.Delete 15   End If 16  End With 17 Next i 18 Next 19End Sub

このようにしたところ、現在全選択ではあるものの、開いているシートの部分だけはこの動きができて、他のシートは動かなかったのでですが、どこが原因でしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

sh.Range sh.Cells とするのがよろしいかと。

投稿2021/09/20 02:34

jinoji

総合スコア4585

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

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

Fetherion

2021/09/20 02:43

早速ありがとうございました! そうでした、、、せっかくshでActiveシートしてるのに抜けてました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問