youblog

Excel VBA ツール : セル内の特定の 文字列 をハイライトする(英文スキャニング用)

今回は、 Excel の 文字列 をハイライトしてスキャニングしやすくする VBA ツールを作成してみたのでシェアしますね。

 

 

こんにちは、ゆう(@ProgYuki)です。

 

仕事柄、英文を読むことが多いのですが、Excelのセルの中に英文がバーっと書かれてる資料を読むことがあります。

出来るだけ早く読みたいので、

するのですが、特にスキャニングするときに特定の文字列をハイライトする機能があると便利ですよね。

探したい情報に早く辿り着きやすくなります。

 

ただ、Excelの検索機能だと検索したい文字列が含まれるセルがどこにあるかは教えてくれるのですが、セル内の文章から特定の文字列を全て検索してハイライト等はしてくれません

なので、

検索したい文字列を指定すると、セル内の文章から文字列を検索し、ハイライトしてくれる

ツールを作ってみました。

 

これで、特定の情報を探したいときに効率的に探せるので、便利ですね。

同じようなニーズがある方やVBAを学びたい方は、記事内にプログラムコード全文も含めてるので、利用してもらえればと思います。

なお、ツールの利用は自己責任でお願いします。
特にVBAは、一旦処理が走るとエラーがあってもctl + z 等で戻ることができませんので、必ず初めて使うときはバックアップ等を取ってから利用してくださいね。

 

Excel VBA ツール : セル内の特定の 文字列 をハイライトする(英文スキャニング用)

マクロ ツール の機能、使用用途、使い方

 

機能

このツールの機能は、

検索したい文字列を指定すると、セル内の文章から文字列を検索し、ハイライトしてくれる

というものです。

 

使用用途

使用用途は、想定としては

Excelセル内に書かれた英文をスキャニングして効率的に情報を探したい

等です。

 

使い方

コードをコピーする場所やプログラムの起動方法は後ほど説明しますが、使い方としては、

  1. 文章が含まれるセルを選択する(複数セル選択可)
  2. VBAプログラムを起動して
  3. 検索したい文字列を入力
  4. 検索文字列が含まれてる場合は、赤太字でハイライトされる

という感じです。

 

画像つきで示すと、

①文章が含まれるセルを選択する(複数セル選択可)

上記のような文字列が含まれたセルを選択します。

複数セルを一気に選択しても一つづつループで回しながら検索するので大丈夫です。

 

②VBAプログラムを起動して

起動の仕方はいろいろとあります。

ご自身でも調べてみると良いと思いますが、一番わかりやすい方法としては、メニューバーの

「開発」→「マクロ」

と進むと実行できるマクロの一覧が表示されるので、そこで今回は「highLighter」という名前にしているので、それを選択して「実行」を押せば実行されます。

 

③検索したい文字列を入力

今回のツールは起動するとポップアップが出てきて、検索したい文字列を指定できるようにしてます。

検索したい文字列を入力してください。

例では、文章の中から「requirement」という文字列を検索しようとしてます。

ちなみに検索文字列は、複数文字列を同時に検索することが可能で、例えば、複数の単語を検索したい場合は、半角スペースで区切って入力してください。

 

④検索文字列が含まれてる場合は、赤太字でハイライトされる

「OK」をクリックすれば入力した検索文字列が赤太字でハイライトされます。

どうでしょうか?うまく実行できましたかね。

不具合などがあればコメント等でご連絡くださいね。

ちなみに何も実行されない場合は、入力した検索文字列がセル内の文章になかったということになります。

 

VBA コードの表示

 

コードの全文は下記の通りです。

Sub accelerate()

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With

End Sub

Sub clearAccelerate()

    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With

End Sub

Sub highLighter()

    Call accelerate
    
    Dim cell As Range
    Dim i As Integer
    Dim hltexts() As String
    Dim texts As String
    Dim mytext As String
    Dim poji As Integer
    
    texts = InputBox(“検索した文字列を入力してください。” & vbCrLf & _
    “複数文字列を検索したい場合は、半角スペースで区切ってください。”)
    hltexts() = Split(texts)
    
    If UBound(hltexts) < 0 Then
        Exit Sub
    Else
        For Each cell In Selection
            For i = 0 To UBound(hltexts)
                mytext = hltexts(i)
                poji = InStr(poji + 1, cell.Value, mytext, vbTextCompare)
                Do While poji > 0
                    If poji > 0 Then
                        With cell.Characters(poji, Len(mytext))
                            .Font.ColorIndex = 3
                            .Font.Bold = True
                        End With
                    End If
                    poji = InStr(poji + 1, cell.Value, mytext, vbTextCompare)
                Loop
            Next i
        Next cell
    End If

    Call clearAccelerate
End Sub

 

については下記の記事で詳しく書いているので、そちらを参考にされてください。

この記事もツール紹介の記事ですが、「VBA プログラムの表示」の項目の後に詳しいコピーの仕方や注意点について書いてます。

Excel VBA で 仕事効率化 : リンク付き INDEX を自動作成しExcel資料を読みやすくする!
今回は、 Excel VBA の マクロ 機能で リンク付き INDEX を自動作成し、Excel資料を読みやすくして 仕事効率化 する方法をシェアします!「Excelの仕事を効率化したい!」「VBAに興味があって、人のプログラムを見て学習したい!」という方にとって役に立つ内容かと思います。

ということで本日は以上になります。

 

私もVBA含めプログラミングを学習中の身なので、

「もっとこうした方が効率的に書けるよ!」
「こんな業務効率化したいんだけど、VBAでできるかな?」

など、ご指摘やアイディアなどをいただけると嬉しいので、コメントやいただけると幸いです!

 

また、Excel VBAを独学したい方向けに記事を書きましたので、興味がある方はご参考にされてみてください↓

Excel VBA を最も効率的に 独学 する方法
仕事にルーティン業務が多い方ほどVBAの力を爆発的に発揮して業務効率化できるので、VBAを勉強しようと考えたことがある方も多いのではないでしょうか。今回は私が6年ほど Excel VBA を使っていて最も効率的だと考える 独学 方法をお伝えしたいと思います。

 

それでは、本日もお読みいただきありがとうございました。

Twitter(@ProgYuki)でも情報発信しているので、ぜひフォロー、いいね、RT等お願いします!

ゆう

モバイルバージョンを終了