
VBA初心者です。
エクセルの表で、エラーがある行を削除し
同じ処理をシートの最後まで続けたいと思い、下記のコードを書きました。
Dim ws As Worksheet
Dim Rng As Range
For Each ws In ThisWorkbook.Worksheets
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
On Error Resume Next
Set Rng = .SpecialCells(xlCellTypeFormulas, xlErrors)
On Error GoTo 0
If Not Rng Is Nothing Then
Rng.EntireRow.Delete
Application.ScreenUpdating = True
End If
Next
End Sub
実行すると【コンパイルエラー Nextに対するForがありません】
のエラーが出てしまいます。
どこを修正すればよいか、お知恵を拝借できますと幸いです。
何卒よろしくお願い申し上げます。
No.3ベストアンサー
- 回答日時:
こんばんは
>コンパイルエラー Nextに対するForがありません
このエラーメッセージは まんま でない事があります
#1様が回答されているようなケース
(For~Next内で If With などに対して正しく閉じられていない場合)でも同じメッセージで表示されます
For If With FalseやTrueなど対応する関係を考えると多分すっきりすると思います
On Error Resume Next についてはエラーセルが無い場合の1004エラー対策ですね
ご質問とは関係ないかもですが
ActiveSheet.UsedRangeについては シートをループしているので
With ws.UsedRangeなどとする必要があります
又はws.Activate ・・この方法はお勧めしませんが
さらに
Withを使用するメリットは無いように思いますので Withを外して
Set Rng = ws.UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors)
で良いのでは無いでしょうか・・
以上を踏まえると
Dim ws As Worksheet
Dim Rng As Range
Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Worksheets
On Error Resume Next
Set Rng = ws.UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors)
On Error GoTo 0
If Not Rng Is Nothing Then
Rng.EntireRow.Delete
End If
Next
Application.ScreenUpdating = True
End Sub
のような処理になると思いますがデバッグして確認してみてください
ご丁寧にご教示頂き誠にありがとうございました。
まだ実現には至っていないのですが、初心者の自分にも
とても丁寧にご説明頂き、勉強になりました。
頂いた内容を踏まえて、またトライしております。
この度はありがとうございました。
No.5
- 回答日時:
インデントを付けると分かり易いです。
他のところも修正しました。
Dim ws As Worksheet
Dim Rng As Range
Application.ScreenUpdating = False ' 移動しました
For Each ws In ThisWorkbook.Worksheets
With ActiveSheet.UsedRange ' With ws.UsedRange では?
On Error Resume Next
Set Rng = .SpecialCells(xlCellTypeFormulas, xlErrors)
On Error GoTo 0
If Not Rng Is Nothing Then
Rng.EntireRow.Delete
End If
' ここに End With が必要
Next
Application.ScreenUpdating = True ' 移動しました
End Sub
Rng を 毎回初期化しなくて大丈夫かな?未確認。
ご丁寧に修正頂き誠にありがとうございました。
初心者にもわかりやすく修正内容を記載していただき、
またインデントもつけていただき、とても勉強になりました。
No.4
- 回答日時:
#3です
サンプル考察で見落としました・・
1シート目にエラーがあり2シート目にエラーが無い場合・・
上手くいかないですね多分・・
対策としては次のシートに移る前にRngを初期化
If Not Rng Is Nothing Then 内を下記の様にします
If Not Rng Is Nothing Then
Rng.EntireRow.Delete
Set Rng = Nothing
End If
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要 6 2022/09/08 16:41
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAのNEXTに対するforがありませんの対応
Visual Basic(VBA)
-
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
-
4
初歩的な事だと思います。 Sub または Function が定義されていません。
Visual Basic(VBA)
-
5
VBAコード記述に際して、コード全体を自動的にインデント付ける方法
Access(アクセス)
-
6
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
7
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
8
エクセルVBAでマルチページの切り替え方法の件で
Excel(エクセル)
-
9
EXCELで2列を参照し、重複するものを横に並べたい
Excel(エクセル)
-
10
【excelVBA】Findメソッドで検索対象を複数列
Excel(エクセル)
-
11
[初心者です]VBAで指定列からAを検索し、発見したら隣のセルに値0を入れるマクロ。
Access(アクセス)
-
12
エラー Nextに対するForがありませんについて
その他(プログラミング・Web制作)
-
13
VBA 別シート、別ブックへ条件一致で転記
Excel(エクセル)
-
14
VBA 値と一致した行の一部の列のデータを転記について教えてください
Visual Basic(VBA)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
17
重複するIDのデータを1行にまとめるvbaのコード
Access(アクセス)
-
18
VBAの「for i=1 to cells(…」と「i=cells(…」の違いを教えてください。
Visual Basic(VBA)
-
19
なぜか「Nextに対応するForがありません」
Excel(エクセル)
-
20
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
Null 値の使い方が不正です と...
-
マクロで"#N/A"のエラー行を削...
-
警告?の補足と条件分岐
-
レコード登録時に「演算子があ...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
マクロエラー 1004 1004 アプ...
-
文字列内で括弧を使うには
-
Excel vbaについての質問
-
VBAのリストボックスで、横スク...
-
String""から型'Double'への変...
-
PostgreSql & Perl でのインサ...
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
【VBA】ワークブックを開く時に...
-
(perl)プログラムの先頭に記述...
-
VB6のプログラムをWIN7で使いたい
-
Excel vbs AppActivate エラー
-
Windows7で、Windows updateの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロOn Error GoTo ErrLabel...
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
String""から型'Double'への変...
-
文字列内で括弧を使うには
-
マクロで"#N/A"のエラー行を削...
-
Excel vbaについての質問
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
【Access】Excelインポート時に...
-
VBでSQL文のUPDATE構文を使った...
-
【VB.NET】 パワポ操作を非表示で
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
実行時エラー'-2147467259(8000...
おすすめ情報