[[20171204100828]] 『文字列検索について』(たんたかたん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『文字列検索について』(たんたかたん)

 朝からVBAで悩んでいます。ご協力お願いします。

セルE列にメール等の件名が数百件表示されています。
その中で特定文字があれば同じ行のA列のセル色を"赤"にしたく。

ネット検索で下記のように直接記載するやり方はあるのですが、
複数対象がある場合が分かりません。

Option Explicit
Sub Find()

    Dim celRow As Long

    If Worksheets(1).Columns("A").Find(what:="ABC", _
    lookat:=xlWhole) Is Nothing Then

    '見つからない場合
        MsgBox ("A列に'ABC'という値のセルはありません")
    Else
    'ある場合
        celRow = Worksheets(1).Columns("A").Find(what:="ABC", _
        lookat:=xlWhole).Row
        MsgBox celRow
    End If

End Sub

例えばsheet2のA列に検索対象の一覧があってそれを検索できることはできないか?
ちなみに現在検索したい文字列は・・・
・テスト結果
・テスト開始
・テスト終了
・結合テスト
・完了
以上、5件です。

今は手動で検索し、都度都度セルAに赤へ書式変更しています。

この辺りの情報で分かりましたら、ご教授お願いします。

どうぞよろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 対応する文字が無い場合に"A列に'ABC'という値のセルはありません"の表示は必ず必要なのだろうか?
 もし、必要なければ条件付き書式でもよさそうだが。
(ねむねむ) 2017/12/04(月) 10:30

Sub main()
'Sheet1のE列にメール等の件名
'Sheet2のA列に検索対象文字の一覧
'Sheet1のA列を赤くする
    Dim c As Range, r As Range, f As Range
    Sheets("Sheet1").Range("A:A").Interior.Pattern = xlNone
    For Each c In Sheets("Sheet2").Range("A:A").SpecialCells(xlCellTypeConstants)
        Set r = Sheets("Sheet1").Range("E:E").Find(What:=c.Value, LookAt:=xlPart)
        If Not r Is Nothing Then
            r.Offset(, -4).Interior.Color = vbRed
            Set f = r
            Do
                Set r = Sheets("Sheet1").Range("E:E").FindNext(r)
                If r.Address = f.Address Then
                    Exit Do
                Else
                    r.Offset(, -4).Interior.Color = vbRed
                End If
            Loop
        End If
    Next c
End Sub
(mm) 2017/12/04(月) 14:04

ねむねむさん、mmさん
(言い訳ですが)研究に没頭するあまり、お礼が遅くなり大変申し訳ございません。

mmさんのを参考に組み込んでみましたら、思う動きになりました。

offsetは今回初めて見るので理解するまでには至っていませんが、
もう少し参考WEB等見て勉強します。

その他構文も分かったようで、まだ自分のものにはなっていないと
感じています。

いずれにしても、もっと書いて覚えていきたいと思います。
これからも質問ばかりになるかと思いますが、気が向けばどうぞよろしくお願いします。

今回は色々ありがとうございました。
(たんたかたん) 2017/12/18(月) 13:42


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.