ここから本文です

※ ネットにありましたkota様の記述をお借りしています。

tab********さん

2018/10/2917:13:47

※ ネットにありましたkota様の記述をお借りしています。

これを実行しますと、
Loop Until C.Address = s0 のところで、
'実行時エラー’91’ オブジェクト変数またはWithブロック変数が設定されていません
となります。
回避策を教えてください。


Sub kota1()

Dim C As Range, r() As Range
Dim MOJI As String, s0 As String
Dim RESPONSE As VbMsgBoxResult
Dim i As Long, j As Long, n As Long
MOJI = InputBox("検索文字入力")
If MOJI = "" Then Exit Sub
j = 0 '該当セルをr()に格納
For i = 2 To Worksheets.Count
With Worksheets(i)
Set C = .Cells.Find(MOJI, , LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False)
If Not C Is Nothing Then
s0 = C.Address
Do
j = j + 1
ReDim Preserve r(1 To j)
Set r(j) = C
Set C = .Cells.FindNext(C)

'知恵袋1030
'実行時エラー’91’ オブジェクト変数またはWithブロック変数が設定されていません

Loop Until C.Address = s0
End If
End With
Next 'r()内のセルを表示
If Not C Is Nothing Then
j = 0
Do
j = j Mod UBound(r) + 1
Application.Goto r(j), scroll:=False
r(j).Font.ColorIndex = 3
RESPONSE = MsgBox("次を検索しますか?", vbYesNo + vbQuestion, "検索続行")
r(j).Font.ColorIndex = xlAutomatic
Loop Until RESPONSE = vbNo
MsgBox ("検索を終了しました")
Else
MsgBox MOJI & "は、ありません。。"
End If
End Sub

閲覧数:
31
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

kik********さん

2018/10/2917:45:19

> Set C = .Cells.FindNext(C)
> Loop Until C.Address = s0

↓上記行の間に ★ の判別入れるとか

Set C = .Cells.FindNext(C)
If C Is Nothing Then Exit Do ' ★
Loop Until C.Address = s0

条件によっては、FindNext の結果が Nothing になる時がある


1つの再現方法については、以下参考になったら
他にも再現方法があるかも??

VBAのイベント処理について教えてください。 以
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q121815149...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/10/29 20:04:11

ありがとうございました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる