[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字列検索について』(たんたかたん)
朝から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
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さんのを参考に組み込んでみましたら、思う動きになりました。
offsetは今回初めて見るので理解するまでには至っていませんが、
もう少し参考WEB等見て勉強します。
その他構文も分かったようで、まだ自分のものにはなっていないと
感じています。
いずれにしても、もっと書いて覚えていきたいと思います。
これからも質問ばかりになるかと思いますが、気が向けばどうぞよろしくお願いします。
今回は色々ありがとうございました。
(たんたかたん) 2017/12/18(月) 13:42
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.