Excelのこととか色々

マクロをどんな Excel ファイルにも実行できるように設定して、3秒かかる操作も1秒で完了。あといろいろ書いてみます・・・

【Excel/VBAのこと22】セル内特定の文字列に色を付ける応用編(Characters)

【Excel/VBA のこと 22】

   f:id:tuna-kichi:20200223230814p:plain

 

 

セル内の指定した文字列にだけ色を付けるには

Characters を使います。

 

応用編として私が業務でどのように使用しているか紹介しようと思い、

業務に似ているサンプルを考えたのですが、いいものが浮かびませんでした。

 

便利さをお伝えできそうにありませんが、

仕組みだけでも書いてみようと思います。

 

****************************************************

 

  

  サンプルデータ

 

都道府県のリストをサンプルにします。

Range("B1") にキーワード「」を入力して、

そのキーワードが列Bのセルに含まれていたら赤色を付けるマクロです。

 

*****************************************************************

マクロ

Sub 特定の文字色付け()

 Dim Target As String 'キーワードを格納
 Dim SLetter As Long 'キーワードのスタート位置を格納
 Dim TargetLen As Long 'キーワードの文字数を格納
 Dim r As Long '行番号を格納
 Dim c As Long '列番号を格納
 Dim LastR As Long '最終行を格納

 Target = Selection 'Range("B1")に入力したキーワードを取得する(山)
 c = Selection.Column 'キーワードを入力したセルの列番号を取得する(2)

 'キーワードを入力したセルの列から最終行を取得する(11)
 LastR = Cells(Rows.Count, c).End(xlUp).Row 

 

 '検索したい列と同じ列にキーワードを入力して、
 'そのままそのセルを選択したままにしておけば
 '「Selection」を使用できるので便利です

 For r = 3 To LastR
  If InStr(Cells(r, c), Target) > 0 Then 'もしセルにキーワードが含まれていたら
   'キーワードのスタート位置を取得する
   SLetter = InStr(Cells(r, c), Selection) '(和歌山の場合は3)
   TargetLen = Len(Target) 'キーワードの文字数を取得する(1)
   Cells(r, c).Characters(Start:=SLetter, Length:=TargetLen).Font.ColorIndex = 3
  End If

 Next r

End Sub

 

  マクロ実行結果
  マクロ実行結果

 

                         

このサンプルデータでの場合は、フィルタリングすれば同じ結果を出せます。

その方が早いです。

 

フィルタリングすると周りの行(データ)が隠れてしまいますが、

この場合はを 行は非表示ならない ので、

周辺のデータと比較して確認作業ができます。

 

検索範囲を広げればすべてのセルを対象にもできます。

 

**********************************************************

 

個人用マクロブックについてはこちら

www.tuna-kichi.com

 

リボンに登録についてはこちら

www.tuna-kichi.com

 

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

にほんブログ村 子育てブログ 幼稚園児育児へ
にほんブログ村
にほんブログ村 英語ブログ 初心者英語へ
にほんブログ村
にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

==================================

  Graspyで無料プログラミング講座を受講する