【VBA×初学者向け】文字列の一部に色を付ける方法
みなさんこんにちは。
現場で良く使用される例としてセル内にある文字列の一部を色付けすることが良くあります。
凡例としては、セル内に入力されて文字列に対して、
特定の文字列を見つけ出し、その文字列のみを赤くするといったところでしょうか。
今回は、セル内にある文字列の一部を色付けする方法について紹介したいと思います。
この記事はこんな人におすすめ
この記事はこんな人におすすめです!
- VBAプログラミング:初級者~中級者
- コードだけサクッと取得したい人
- 効率の良いコードを書きたい人
といったところでしょうか。
初学者向けの過去記事
VBA初学者のための関連項目については過去の記事でもご紹介しております。
文字列の一部に色を付ける方法を習得するメリット
本ブロブの内容を基に文字列の一部に色を付ける方法を習得するメリットは以下のとおりです。
- VBAの基礎スキル定着
- 頻出する問題への対応
- 作業効率化
といったところでしょうか。
本件は日常業務でも使用する機会が非常に多いかと思いますので、
一度やり方を覚えてしまえばかなり有効的なスキルになるかと思います。
準備
まずはセルB2に文字列を入力します。
B2の文字列を赤くする場合は以下のコードを記述します。
Rangeを使用する場合
Rangeを使用する際は”(ダブルクォーテーション)でくくった中にセルの番地を入力します。
Range("B2").Font.Color = RGB(255, 0, 0)
Cellsを使用する場合
Cellsを使用する際は(行番号:縦方向 , 列番号:横方向)を数値で指定します。
Cells(2,2).Font.Color = RGB(255, 0, 0)
この場合の記述だと全ての文字が赤くなります。
次からどのようにするのか細かくご紹介します。
実用例
セル内の文字の一部だけ色を変更する関数
記述方法としては以下となります。
Range("<セルの指定>").Characters(Start:=X, Length:=X).Font.Color = RGB(@, @, @)
Charactersでセル内の変更したい文字の場所をしていします。(Start:=Xにはスタートの位置、Length:=Xには文字数を代入します。)
RGB(@, @, @)には前述を参考として赤くする場合は、RGB(255, 0, 0)にします。
セル内の文字の一部だけ色を変更する方法の使用例
実際の使用例です。
上記ブック内に記載されている文字でVBAだけを赤くします。
- 文字が記載されている場所はB2
- VBAと記載されている箇所はInStr関数を使用
- VBAの文字列の長さはLen関数を使用
- 赤文字にしたいので、RGB(255, 0, 0)
になります。
サンプルコード
Sub Macro_TEST()
Dim searchText As String
Dim textLength As Integer
Dim startPos As Integer
' 検索する文字列「VBA」
searchText = "VBA"
' 検索する文字列の長さを取得
textLength = Len(searchText)
' "VBA" という文字の位置を特定
startPos = InStr(Range("B2").Value, searchText)
If startPos > 0 Then
' "VBA" の文字を赤くする
Range("B2").Characters(startPos, textLength).Font.Color = RGB(255, 0, 0)
End If
End Sub
セル内の文字を一部だけ色を変更する方法の実行結果
上記、サンプルコードを使用して、セル内の文字を一部だけ色を変更することが出来るか確認します。
文字列でVBAの箇所のみを赤色にすることが出来ました。
最後に
いかがでしたでしょうか。
色変更自体は簡単にできますが、
検出する文字列の開始位置を特定するためにInStr関数を、
検出する文字列の長さを特定するためにLen関数を使用するので、
基本が凝縮されている内容になっているかと思います。
少しでも参考になればと思います。
開発依頼について
ココナラでWebスクレイピング開発サービスを出品しております。
自分で開発をしようと思ったけど、依頼したり、何か聞きたいことがあったりしたら
いつでもお気軽にご相談ください。
また、本ブログからご依頼いただいた方については割引特典がございますので、
ご不明点と合わせてメッセージをいただけると幸いです。
Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!