Excel VBA 質問スレッド №2043 (解決済)

findnextで複数条件を検索したい

投稿者 : でんち     投稿日時 : 2024/11/17(Sun) 21:45:17     OS : Windows 10     EXCEL : Excel 2019
【実現したいこと】
7行目と9行目に検索値と一致するものがあればセルの背景色を変える。
検索値:B1~J1

下記が実際に記述したコードで、検索値(What)に複数のキーワード(B1:J1やB1,D1,F1,H1,J1等)を入れるとエラーになってしまいました。
findnextメソッドの検索値を複数にすることは可能でしょうか。
findメソッドで検索値を複数にするコードは見つけたのですが、検索結果が1つとは限らないのでfindnextメソッドで実現させたいです。


'祝日と一致する出荷日行のセルを選択する
Sub Find()
    Dim FoundCell As Range, FirstCell As Range, Target As Range
    Set FoundCell = Range("B7:AH7,B9:AH9").Find(What:=Range("B1"))
    If FoundCell Is Nothing Then
        MsgBox "見つかりません"
        Exit Sub
    Else
        Set FirstCell = FoundCell
        Set Target = FoundCell
    End If
    Do
        Set FoundCell = Range("B7:AH7,B9:AH9").FindNext(FoundCell)
        If FoundCell.Address = FirstCell.Address Then
            Exit Do
        Else
            Set Target = Union(Target, FoundCell)
        End If
    Loop
    Target.Select

'選択したセルの色を薄いブルーにする
    Selection.Interior.Color = RGB(221, 235, 247)

End Sub

スポンサーリンク
[返信 1] Re : findnextで複数条件を検索したい
投稿者 : 玉ちゃんファイト     投稿日時 : 2024/11/18(Mon) 02:36:07
msgbox Range("B7:AH7,B9:AH9")
ができないのと同じ

[返信 2] Re : findnextで複数条件を検索したい
投稿者 : ピロリ     投稿日時 : 2024/11/18(Mon) 05:31:04
■[質問] でんちさん(2024-11-17 21:45:17)の記事
> findnextメソッドの検索値を複数にすることは可能でしょうか。
多分、Find(What:=Range("B1") Or Range("C1") Or ・・・ ) のような検索をしたいのでしょうけど、
既に回答のあるように、findメソッドは複数の検索キーワードを指定できません。
↓ご参考です。
Sub Find2()
    Dim FoundCell As Range, FirstCell As Range
    Dim Search As Range
    For Each Search In Range("B1:J1")                   '検索キーワードは1つずつ処理すべき
        If Search <> "" Then
            Set FoundCell = Range("B7:AH7,B9:AH9").Find(What:=Search)
            If Not FoundCell Is Nothing Then
                Set FirstCell = FoundCell
                Do
                    FoundCell.Interior.Color = RGB(221, 235, 247)   '検索セルを薄いブルー
                    Set FoundCell = Range("B7:AH7,B9:AH9").FindNext(FoundCell)
                    If FoundCell.Address = FirstCell.Address Then
                        Exit Do
                    End If
                Loop
            End If
        End If
    Next Search
End Sub

[返信 3] Re : findnextで複数条件を検索したい
投稿者 : でんち     投稿日時 : 2024/11/18(Mon) 15:51:34
玉ちゃんファイト さま
ピロリ さま

ご返信いただきありがとうございます。
findnextメソッドでは複数条件で検索はできないのですね。
なにかやり方が無いか引き続き調べてみます。
ありがとうございました!

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2024-12-07 23:46:59 )
タイトルとURLをコピーしました