実行時エラー'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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
findメソッドの変数について
Visual Basic(VBA)
-
-
4
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
5
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
6
エクセルVBAで実行時エラー 91 が出ます
Excel(エクセル)
-
7
VBAの実行時エラー91!どうしよう?
Visual Basic(VBA)
-
8
実行時エラー91
Windows 8
-
9
UserForm1.Showでエラーになります。
工学
-
10
findは動くがfindnextがマクロで動きません。記述は同じはずなのですが…
Visual Basic(VBA)
-
11
VBAのFind関数で結合セルを検索するとヒットしない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで住所の混在する「丁...
-
ハメ撮りが流出したら
-
もう関わりたくない人がいたらL...
-
指定した文字があった場合、そ...
-
エクセルVBAで行削除時にエラー...
-
エクセル ユーザー設定リスト...
-
今日の日付が過ぎたらその行を...
-
Facebookメッセンジャーの不具合
-
LINE友達削除した後にLINEが消...
-
【ExcelVBA】指定のシート以外...
-
Excel 数式を入れているため、...
-
Excel リンク先のエクセルファ...
-
【C#】ifと#ifの違い、そして#e...
-
ダウンロードファイルの削除の仕方
-
回答の削除ついての説明がない...
-
VBA:Openステートメントで開い...
-
(Access)複数条件の重複デー...
-
インスタアカウント、前の携帯...
-
動的に生成したボタンのイベン...
-
もはや喧嘩売ってるのか私(笑...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えてgooの機能に関するアンケ...
-
VBA:Openステートメントで開い...
-
指定した文字があった場合、そ...
-
エクセルで住所の混在する「丁...
-
回答が付かなかったので、再質...
-
もう関わりたくない人がいたらL...
-
同じ様な内容の質問を繰り返しても
-
喧嘩をしてLINE削除され、 また...
-
今日の日付が過ぎたらその行を...
-
日テレニュースHP、記事削除は...
-
Facebookメッセンジャーの不具合
-
ハメ撮りが流出したら
-
恋愛相談かてで
-
ダブルクォーテーションの削除...
-
エクセルVBAで行削除時にエラー...
-
教えてgooで誰でも月1回だけ回...
-
アクセスにおいて間違って削除...
-
女友達にLINEしたら、既読スル...
-
ウェブページへのアクセス不可 ...
-
すべてやりきった、大満足を意...
おすすめ情報