アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2003です。
A2からA100の範囲のすべてのセルに文字列(文章)が入っています。
セルにより、約30~1200文字程度とばらばらです。
この範囲の各セルの文字列の中に、「愛、恋、幸福、love」という文字列があれば、その語句だけを太字にしたいのです。
(なければ、なにもしません。)
英字(love)は半角全角大文字小文字を問いません。
一応、ここまでは書いたのですが、検索するところでお手上げになってしまいました。
なにとぞ、お助けください。

Sub Test()
Dim myW
Dim i As Long
myW = Split("愛,恋,幸福,love", ",")
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
For n = LBound(myW) To UBound(myW)
MsgBox Cells(i, "A").Value & "に" & myW(n) & "があれば太字に" 'この肝心な部分がわかりません。
Next n
Next i
End Sub

A 回答 (3件)

そこまで自力で書ける人になら全文載せてもいいかな(笑)



Sub Test()
Dim myW
Dim i As Long
Dim c As Range
Dim inS As Long
myW = Array("愛", "恋", "幸福", "love")
For Each c In Range("A2", Cells(Rows.Count, "A").End(xlUp)).Cells
For Each s In myW
With c
inS = InStr(1, .Value, s, vbTextCompare)
If inS > 0 Then
.Characters(inS, Len(s)).Font.Bold = True
End If
End With
Next
Next
End Sub

こういう感じです。
質問者さんの元のコードをなるべく残しました。
InStr関数とCharactersプロパティがポイントです。
    • good
    • 1
この回答へのお礼

> InStr関数とCharactersプロパティがポイントです。

有難うございます。
おかげさまで検索&太字設定ができました。
また、vbTextCompareで全半角大小問わず検索できることも勉強になりました。

ただ、同一セル内に同じ語句が複数出てきた場合、最初のものしか対象になりませんでした。
(わたしの質問が悪かったですね、すみません、)

お礼日時:2011/10/06 13:37

一例です。



pos = InStr(1, Cells(i, "A"), myW(n), vbTextCompare)
Do While pos > 0
Cells(i, "A").Characters(pos, Len(myW(n))).Font.Bold = True
pos = InStr(pos + 1, Cells(i, "A"), myW(n), vbTextCompare)
Loop
    • good
    • 4
この回答へのお礼

ありがとうございます。
検索開始位置を指定し、こうやってLOOPさせれば複数の同一文字列の出現に対処できるんですね!
とっても勉強になりました。
以下のようにやって目的が達成できました。

Sub Test03()
Dim myW
Dim i As Long, n As Long, pos As Long
myW = Split("愛,恋,幸福,love", ",")
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
For n = LBound(myW) To UBound(myW)
pos = InStr(1, Cells(i, "A"), myW(n), vbTextCompare)
Do While pos > 0
With Cells(i, "A").Characters(pos, Len(myW(n))).Font
.Bold = True
.ColorIndex = 3
End With
pos = InStr(pos + 1, Cells(i, "A"), myW(n), vbTextCompare)
Loop
Next n
Next i
End Sub

お礼日時:2011/10/06 13:45

#1です。


複数出現については質問文に無かったのでうっかりしていました。失礼しました。
私もmu2011さまに感謝。
    • good
    • 0
この回答へのお礼

> 複数出現については質問文に無かったのでうっかりしていました。

いえいえ、わたしがちゃんと質問に書かなかったのが悪いんです。
今回は有難うございました。

お礼日時:2011/10/06 17:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!