ここから本文です

以下のようなマクロで「成」の字を赤の太字で強調したのですが、添付したファイル...

tyo********さん

2017/12/2913:04:18

以下のようなマクロで「成」の字を赤の太字で強調したのですが、添付したファイルのように、同じセル内でも強調される「成」と強調されない「成」があります。どうしてこのようになるのでしょうか?

またそのようにならないようにすることはできるのでしょうか?
エクセルは2013です。
Sub test()
Dim rng As Range, r As Range, i As Long, colInd As Integer
Dim txt As String
Set rng = ActiveSheet.Range("a1:t50000")
txt = "成"
colInd = 3
For Each r In rng
With r.Characters(InStr(r, txt), Len(txt)).Font
If InStr(r, txt) > 0 Then
.ColorIndex = colInd
.Bold = True
End If
End With
Next
End Sub

t50000&quot,r As Range,i As Long,Set rng,If InStr,r.Text,tyokutomi

閲覧数:
47
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

nom********さん

2017/12/2913:26:06

二つ以上「成」がある可能性があるなら、ループを回す必要があります。
以下の様な感じで出来るかなと思います。

Sub test()
Dim rng As Range, r As Range, i As Long, colInd As Integer
Dim txt As String
Set rng = ActiveSheet.Range("a1:t50000")
txt = "成"
colInd = 3
For Each r In rng
Do
i = InStr(i + 1, r.Value, txt)
If i > 0 Then
With r.Characters(i, Len(txt)).Font
.ColorIndex = colInd
.Bold = True
End With
End If
Loop Until InStr(i + 1, r.Value, txt) = 0
i = 0
Next
End Sub

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

vcx********さん

2017/12/2913:24:00

tyokutomiさん

どうしてそうなのかは、このコードが最初に見つけた「成」だけを対象にしているからです。


Sub test1()
Dim rng As Range, r As Range, i As Long, colInd As Integer
Dim txt As String

'Set rng = ActiveSheet.Range("a1:t50000")
Set rng = ActiveSheet.UsedRange

txt = "成"
colInd = 3
For Each r In rng
If InStr(r.Text, txt) > 0 Then
For i = 1 To Len(r.Text)
If Mid(r.Text, i, 1) = txt Then
With r.Characters(i, 1).Font
.ColorIndex = colInd
.Bold = True
End With
End If
Next i
End If
Next
End Sub

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる