laichi
@laichi

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Excelで禁止単語を検出・マーキングしたいです。

解決したいこと

Excelファイル内の禁止単語を検出し、その単語の箇所のみマーカーで線を引きたいです。

具体的な内容

Excelファイル内に、このようにコメントを入れています。
image.png
この中で、「子供」という単語は「子ども」と書かなくてはなりません。
そのため、禁則単語(ここでは「子供」)が出た場合、以下の図のように文字色を変更したいです。
image.png

このような、禁止単語を別のExcelファイルにまとめて記入し、そのファイル内の禁止単語が使用されている場合には、上記のような処理を行いたいです。
また、Pythonなどは使用せずに、ExcelのVBAやマクロのみで解決したいです。

1

2Answer

例えば、とてもシンプルにざっくり書くと、
おそらくこんな感じになるのではと思います。。

Sub CheckNG()
    Set re = CreateObject("VBScript.RegExp")
    NGWord = "吾輩|猫|である|名|私達|貴方|人|方|皆さん|先生|教師"
    NGWord = NGWord & "|下さい|銀行|郵便局|図書館|美術館|今|時|分|半"
    NGWord = NGWord & "|食べます|見ます|朝ご飯|昼ご飯|晩ご飯|卵" '......
    re.Pattern = NGWord
    're.Pattern = MakeNGList()
    re.Global = True
    For Each target In Range("A1:B30")
        Set mc = re.Execute(target)
        For Each m In mc
            target.Characters(m.FirstIndex + 1, m.Length).Font.Color = vbRed
        Next
    Next
End Sub

Function MakeNGList() As String
    For Each msg In Range("'[NGWord.xlsx]Sheet1'!D1:D100")
        If msg <> "" Then
            temp = msg & "|" & temp    
        End If
    Next
    MakeNGList = temp
End Function
2Like

Comments

  1. @laichi

    Questioner

    ご回答いただきありがとうございます!
    やりたかったことができました。

Excelファイル内厳密には
セル以外できません。form内のテキストボックスも私の時代ではできなかった記憶があります。

ActiveCell.Characters(Start:=4, Length:=3).Font.ColorIndex = 3

ActiveCell.Characters(1,3).PhoneticCharacters = "フリガナ"

下はルビの例ですが(1,3)の表記もできる例です。

ActiveCellは cell ,rengeで置きかえてください。

Font.ColorIndex = 3 を Font.Color = vbRed に変更して下さい。

re 正規表現で検索しCharacters(1,3)にfor文で【セルのテキスト】にセットして下さい。

1Like

Comments

  1. @laichi

    Questioner

    ご回答いただきありがとうございます!

Your answer might help someone💌