Sub 呼び出し用のマクロ() ' 全半角大文字小文字のkgやgを半角小文字に置換して着色する例 Call UnitCorrecter("([0-90-9]+\s*[kKkK]?[gGgG])", "([kKkK]?\s*[gGgG])")
EndSub
Sub UnitCorrecter(ptn1, ptn2) ' 正規表現であるようなptn1のパターンに該当する文字列を半角小文字に置換した上で赤文字にし,それに該当せずptn2に該当する文字列を青文字にします. Dim rng As Range Dim i AsLong Dim converted AsString Dim re AsObject Set re = CreateObject("VBScript.RegExp") re.Global = True Dim m, mc As Variant
re.Pattern = ptn1 ForEach rng In Selection Set mc = re.Execute(rng) ForEach m In mc For i = 0To m.submatches.Count - 1 ' --- begin --- ' ここで正規表現でヒットしたテキストをconvertedに置換します. ' この例では半角小文字に置換しています. converted = StrConv(m.submatches(i), vbNarrow) converted = LCase(converted) ' --- end --- rng = Replace(rng, m.submatches(i), converted) rng.Characters(m.FirstIndex + 1, Len(converted)).Font.Color = RGB(255, 0, 0) Next Next Next
re.Pattern = ptn2 ForEach rng In Selection Set mc = re.Execute(rng) ForEach m In mc For i = 0To m.submatches.Count - 1 If rng.Characters(m.FirstIndex + 1, 1).Font.Color <> RGB(255, 0, 0) Then rng.Characters(m.FirstIndex + 1, Len(m.submatches(i))).Font.Color = RGB(0, 0, 255) EndIf Next Next Next