[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『特定の文字列(複数あり)を含むセルの色を変更するVBA』(ここあ)
お世話になります。
特定の文字列(複数あり)を含むセルの色を変更するVBAはありますでしょうか?
検索したい文字列は全てC列にあり、C列の特定の文字を含むセルのみ背景色を変更したいです。
また、特定の文字列が20個ほどあり、検索で見つけた下記のVBAだと行が長すぎます。というようなエラーがでてしまいました。
また、下記VBAだと行全体が塗りつぶされてしまうので、文字列を含むセルのみ色を付けたいです。
詳しい方ぜひご教示くださいますと幸いです。
宜しくお願い致します。
'プログラム1|プログラム開始
Sub ColorRowsWithKeywords()
'プログラム2|キーワードを入力 Dim keywords As String keywords = InputBox("抽出の対象となる文字列を記入。複数ある場合は、「,」で区分けすること")
'プログラム3|キーワードがない場合、プログラムを終了 If keywords = "" Then: Exit Sub
'プログラム4|シート設定 Dim ws As Worksheet Set ws = ActiveSheet
'プログラム5|シートの最右列を取得 Dim col As Long col = ws.UsedRange.Columns.Count
'プログラム6|変数設定 Dim rng As Range Dim keyword As Variant
'プログラム7|2行目以降を行ごとに取得 Dim i As Long For i = 2 To ws.UsedRange.Rows.Count Set rng = ws.UsedRange.Rows(i)
'プログラム8|対象行にデータが含まれていなければプログラム11へ If WorksheetFunction.CountA(rng) = 0 Then: GoTo Continue
'プログラム9|プログラム2の全キーワードを繰り返し処理 For Each keyword In Split(keywords, ",")
'プログラム10|各行にキーワードを含むセルがあれば行を黄色、なければ色をなくす If Not rng.Find(keyword, Lookat:=xlPart) Is Nothing Then ws.Range(Cells(i, 1), Cells(i, col)).Interior.ColorIndex = 6 Exit For Else ws.Range(Cells(i, 1), Cells(i, col)).Interior.ColorIndex = xlNone End If Next
'プログラム11|プログラム8のジャンプ先
Continue:
Next
'プログラム12|プログラム終了
End Sub
< 使用 Excel:Excel2016、使用 OS:unknown >
(γ) 2021/09/09(木) 10:25
「セルの指定方法」については、下記が参考になるかと思います。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html
Cells(k,"C")といった使い方や、
Endを使った最終行の求め方など、
これらが不明なら、基本テキストを復習するのが遅いようで近道ですね。
(γ) 2021/09/09(木) 10:40
(γ) 2021/09/09(木) 11:37
Sub SearchSample()
'プログラム1
'プログラム1-1|変数設定 Dim Keywords As Variant Dim SearchRange As Range Dim ColorRGB As Long
'プログラム1-2|検索キーワードを設定 Keywords = Split(InputBox("抽出の対象となる文字列を記入。複数ある場合は、「,」で区分けすること"), ",")
'プログラム1-3|検索範囲を設定 Set SearchRange = Application.InputBox("検索の対象となるセル範囲を記入", Type:=8)
'プログラム1-4|色を設定 ColorRGB = RGB(255, 255, 0)
'プログラム2
'プログラム2-1|変数設定 Dim iRange As Range Dim firstAddress As String Dim Keyword As Variant
'プログラム2-2|検索範囲セルの色をなくす SearchRange.Interior.Color = xlNone
'プログラム2-3|プログラム1の全キーワードを繰り返し処理 For Each Keyword In Keywords
'プログラム2-4|検索範囲からキーワードを含むセルを探す Set iRange = SearchRange.Find(What:=Keyword, LookIn:=xlValues, LookAt:=xlPart)
'プログラム2-5|検索にかかるセルがあった場合だけ処理 If Not iRange Is Nothing Then
'プログラム2-6|最初に検索にかかったセルのアドレスを記録(無限ループ防止用) firstAddress = iRange.Address
'プログラム2-7|ループ開始(プログラム2-7'まで) Do
'プログラム2-8|検索にかかったセルの色を変える iRange.Interior.Color = ColorRGB
'プログラム2-9|プログラム2-4と同一条件で次のセルを検索 Set iRange = SearchRange.FindNext(iRange)
'プログラム2-7'|プログラム2-6で記録したセルと検索にかかったセルのアドレスが同一になるまでループ Loop Until iRange.Address = firstAddress
End If Next End Sub
比較試用のためのサンプルです。
研究用にどうぞ。
(めざめるパワー) 2021/09/09(木) 13:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.