
エクセル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
No.2ベストアンサー
- 回答日時:
一例です。
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
ありがとうございます。
検索開始位置を指定し、こうやって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
No.3
- 回答日時:
#1です。
複数出現については質問文に無かったのでうっかりしていました。失礼しました。
私もmu2011さまに感謝。
> 複数出現については質問文に無かったのでうっかりしていました。
いえいえ、わたしがちゃんと質問に書かなかったのが悪いんです。
今回は有難うございました。
No.1
- 回答日時:
そこまで自力で書ける人になら全文載せてもいいかな(笑)
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プロパティがポイントです。
> InStr関数とCharactersプロパティがポイントです。
有難うございます。
おかげさまで検索&太字設定ができました。
また、vbTextCompareで全半角大小問わず検索できることも勉強になりました。
ただ、同一セル内に同じ語句が複数出てきた場合、最初のものしか対象になりませんでした。
(わたしの質問が悪かったですね、すみません、)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba テキストボックスとリフト...
-
枠に収まらない文字を非表示に...
-
(Excel)数字記入セルの数値の後...
-
エクセルで指定したセルのどれ...
-
excelの特定のセルの隣のセル指...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
Excel 例A(1+9) のように番地の...
-
Excelで数式内の文字色を一部だ...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
Excelでのコメント表示位置
-
セルをクリック⇒そのセルに入力...
-
エクセルVBA、ファイル名をセル...
-
【エクセル】IF関数 Aまたは...
-
EXCELのセルの中の半角カンマの...
-
エクセルの書式設定の表示形式...
-
エクセルで、複数の参照範囲を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
excelの特定のセルの隣のセル指...
-
枠に収まらない文字を非表示に...
-
エクセルの書式設定の表示形式...
-
数式を残したまま、別のセルに...
-
【エクセル】IF関数 Aまたは...
-
セルをクリック⇒そのセルに入力...
-
(Excel)数字記入セルの数値の後...
-
Excelで、「特定のセル」に入力...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
EXCEL VBA セルに既に入...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excelで数式内の文字色を一部だ...
-
エクセルのセルの枠を超えて文...
-
エクセル オートフィルタで絞...
-
Excelでのコメント表示位置
-
連続しないセルから最小値を引...
おすすめ情報