
実行時エラー'91'
オブジェクト変数またはWithブロック変数が設定されていません
というエラーが出ます
同じような質問をいくつか見つけました。
FindでTRUEが見つからなくなったときの処理が問題?だと思うんですが、それを解決するために、どうしていいか分かりません。
よろしくお願いします。
AL列にTRUEとある行を削除するマクロです。
処理が正常に終わり、最後にエラーが出ます。
Sub 行削除()
lastrow = Range("AL1").End(xlDown).Row
i = 1
Dim trow As String
Do While i < lastrow
trow = Range("AL:AL").Find(What:="TRUE").Row
Rows(trow).Delete
i = i + 1
Loop
End Sub
No.3ベストアンサー
- 回答日時:
こんにちは。
そのままのマクロでは、Error トラップを設けないと離脱できないはずです。そのマクロの場合は、エラーは避けられないです。
理由は、
trow = Range("AL:AL").Find(What:="TRUE").Row
で、見つからなかったときの判定が出来ないからです。Error トラップをしない方法では、
たぶん、以下のようにすれば良いと思います。
'------------------------------------------
Sub 行削除()
Dim trow As Range
Do
Set trow = Range("AL:AL").Find(What:="TRUE", LookIn:=xlValues)
If trow Is Nothing Then Exit Sub
Rows(trow.Row).Delete
Loop
End Sub
'--------------------------------------
なお、このようなマクロは、オートフィルタを用い、SpecialCells で、可視行のみを選択して削除するのが一般的です。
分かりやすく解説していただきありがとうございます。
> なお、このようなマクロは、オートフィルタを用い、SpecialCells で、可視行のみを選択して削除するのが一般的です。
よく分からないので調べてみます。
No.5
- 回答日時:
#3の回答者です。
#4 の onlyromさんの
>最近FINDメソッドが流行のようですが
確かに、おっしゃるとおり、最近、Find メソッドを使う方が多いようです。私は、Find は、厳密には、表のワークシートからの使いこなしと、VBAとは若干仕様が違っていた時代もあったようで、Excel 2003までは、敬遠してきたという経緯があります。また、今回の検索自体も、本来、"TRUE" という文字列を探すというのも、若干、私には違和感があります。
それと同じくして、Do ~ Loop も、ループの離脱の判定が簡単に使いこなせない時があります。
別に、よいしょではありませんが、一番分かりやすく間違いが少ないのは、
onlyromさんの #4の方法
For i= 初期値 To 終了値 ~ Next
がお勧めです。
なお、行の削除の場合は、逆さ=Step -1 にしていきます。これは、覚えたほうがよいですね。
本と首っ引きで、やりたいことが解決できそうなのを組み合わせて試していて引っかかっていました。同じことをするにもいろいろやり方があるんだと、勉強になりました。ありがとうございます。
No.4
- 回答日時:
最近FINDメソッドが流行のようですが。
。。。オーソドックスな方法でやると
'--------------------------------------------------
Sub 行削除()
Dim R As Long
For R = Range("AL65536").End(xlUp).Row To 2 Step -1
If Cells(R, "AL").Value = True Then
Rows(R).Delete xlShiftUp
End If
Next R
End Sub
'-------------------------------------------------------
それから、質問する前にヘルプを見る癖をつけると上達が早いと思われます。
(FINDメソッドのヘルプより抜粋)
情報が見つかった最初のセル (Range オブジェクト) を返します。
検索の条件にあてはまるセルが見つからなかった場合は、Nothing を返します。
使用例もちゃんと載っています。
以上。
No.2
- 回答日時:
訂正です。
一部間違えました。
Sub 行削除()
Dim trow As Variant
Do
Set trow = Range("AL:AL").Find(What:="TRUE")
If Not trow Is Nothing Then Rows(trow.Row).Delete
Loop While Not trow Is Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
このQ&Aを見た人はこんなQ&Aも見ています
-
findメソッドの変数について
Visual Basic(VBA)
-
VBA エクセル で FIND でのエラーについて,教えてください。
Excel(エクセル)
-
エラー91 オブジェクト変数またはブロック変数が設定されてません
Visual Basic(VBA)
-
-
4
VBAの実行時エラー91!どうしよう?
Visual Basic(VBA)
-
5
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
6
エクセルVBA、ステップモードと結果が異なる
その他(Microsoft Office)
-
7
findは動くがfindnextがマクロで動きません。記述は同じはずなのですが…
Visual Basic(VBA)
-
8
VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます
Visual Basic(VBA)
-
9
vbaのエラー対応(実行時エラー7:メモリが不足しています)
Visual Basic(VBA)
-
10
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Yahooフリマってどれくらい時間...
-
VBA:Openステートメントで開い...
-
Youtubeの書き起こしの機能につ...
-
告白してフラれた相手の連絡先...
-
BD-Rは容量がなくなるまで何度...
-
指定した文字があった場合、そ...
-
昨日数学の三角関数に関する質...
-
もう関わりたくない人がいたらL...
-
メーリングリストから特定の人...
-
Windows11に残されたWindows10...
-
Adobe AcrobatのPDFのページ削除
-
VBA 編集可能な範囲の指定につ...
-
これはやらせですよね?
-
バッチファイルを使用したsql@p...
-
ワードで画像に埋め込まれたハ...
-
2度と連絡とらないとお互い納得...
-
ウェブページへのアクセス不可 ...
-
ECLIPCE AVN9902HDについて
-
【ExcelVBA】指定のシート以外...
-
Windows 10でMS-IMEを削除できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Yahooフリマってどれくらい時間...
-
指定した文字があった場合、そ...
-
告白してフラれた相手の連絡先...
-
VBA:Openステートメントで開い...
-
mp3の埋め込み画像の削除ができ...
-
バッチファイルを使用したsql@p...
-
喧嘩をしてLINE削除され、 また...
-
今日の日付が過ぎたらその行を...
-
エクセルで住所の混在する「丁...
-
Windows11に残されたWindows10...
-
もう関わりたくない人がいたらL...
-
【エクセル】セル内の右側のみ...
-
アクセスにおいて間違って削除...
-
VBA IF文でORを使ったとき後ろ...
-
エクセルVBAで行削除時にエラー...
-
ポケモンGOについて質問したい...
-
エクセルで下の空白行を削除したい
-
(Access)複数条件の重複デー...
-
投稿した書き込みの削除の方法...
-
メーリングリストから特定の人...
おすすめ情報