出題内容
選択セル(Selection:複数範囲あり)の文字列に「注意」という文字があった場合は、その「注意」の文字だけを"赤の太字"に設定してください。
セル以外(図形等)が選択されている場合は何もせずに正常終了するようにしてください。
自分の解答
Sub vba13()
Dim 検索キーワード As String
Dim 発見位置 As Long
Dim 文字数 As Long
Dim i As Long
検索キーワード = "注意"
文字数 = Len(検索キーワード)
For i = 1 To Selection.Count
発見位置 = InStr(Selection.Item(i), 検索キーワード)
If 発見位置 <> 0 Then
With Selection.Item(i).Characters(Start:=発見位置, Length:=文字数)
.Font.ColorIndex = 3
.Font.Bold = True
End With
Else
End If
NextEnd Sub
2つ目の"注意"に対して処理できていない。
図形が選択されている時の対応ができていない。
修正
Instrで文字列検索する際に、開始位置をずらすことで2つ目の"注意”に対応できるように修正。
"注意"という文字列が存在しない場合は0になる。結果が0になった場合はループを抜ける。
Sub vba13()
Dim 検索キーワード As String
Dim 発見位置 As Long
Dim 文字数 As Long
Dim i As Long
Dim ix As Long
検索キーワード = "注意"
文字数 = Len(検索キーワード)
If TypeName(Selection) <> "Range" Then
Exit Sub
End If
For i = 1 To Selection.Count
ix = 1
Do
発見位置 = InStr(ix, Selection.Item(i), 検索キーワード)
If 発見位置 = 0 Then
Exit Do
Else
With Selection.Item(i).Characters(Start:=発見位置, Length:=文字数)
.Font.ColorIndex = 3
.Font.Bold = True
End With
ix = 発見位置 + 文字数
End If
Loop
NextEnd Sub