
使用アプリ:Excel2007
VBAでオートシェイプ内の文字列を検索し、見つけた文字列の色を赤に変えたいと思っています。
検索文字列がアルファベットの場合は全角、半角、大文字、小文字の区別はなくしたいです。
検索文字列を「abc」 とし、オートシェイプ内に「abc(半角小文字)、abc(全角小文字)、ABC(半角大文字)、ABC(全角大文字)」という文字列があった場合、アルファベットだけが全て赤になるようにしたいのですが、ご教示いただけますでしょうか。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
No.1です。
画像通り検索文字列をB3セルに入力するとします。
シートモジュールにしてください。
Sub Sample2()
Dim k As Long, myStr As String, mySp As Shape, myRng As Variant
If Range("B3") <> "" Then
myStr = StrConv(Range("B3"), vbNarrow)
For Each mySp In ActiveSheet.Shapes
Set myRng = mySp.TextFrame2.TextRange
If InStr(StrConv(myRng, vbNarrow), myStr) > 0 Then
For k = 1 To Len(myRng)
If Mid(StrConv(myRng, vbNarrow), k, Len(myStr)) = myStr Then
myRng.Characters(Start:=k, Length:=Len(myStr)) _
.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
End If
Next k
End If
Next mySp
End If
End Sub
※ 質問文に
>全角、半角、大文字、小文字の区別はなく・・・
とありますので、少し面倒なコードになっています。
そして、複数含まれていても対応させるため
1文字ずつ舐めるように検索しています。m(_ _)m
大文字小文字が判別は、vbNarrowのあとに + vbLowerCase を付加することで解決しました。
大変助かりました。
どうもありがとうございました。
No.1
- 回答日時:
こんにちは!
VBAになりますが、一例です。
Sub Sample1() 'この行から//
Dim k As Long, mySp As Shape, myStr As String
For Each mySp In ActiveSheet.Shapes
For k = 1 To Len(mySp.TextFrame2.TextRange.Characters.Text)
myStr = Mid(StrConv(mySp.TextFrame2.TextRange.Characters.Text, vbNarrow), k, 1)
If myStr Like "[A-Z,a-z]" Then
mySp.TextFrame2.TextRange.Characters(Start:=k, Length:=1) _
.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
End If
Next k
Next mySp
End Sub 'この行まで//
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
住宅にカナを入力する際に丁目...
-
VBA 文字に半角が含まれて...
-
IEからEdgeへの移行に伴うIMEの...
-
英数字のみ全角から半角に変換
-
word差し込み印刷 半角カタカ...
-
全角入力
-
エクセルで半角文字をシートご...
-
コンボボックスに貼り付け文字...
-
エクセルの検索が正しくできな...
-
全角英数字の必要性が理解できない
-
Excelの中に全角ひらがな、漢字...
-
VB.net、テキストボックス入力...
-
[VBScript]バイト長の判定
-
「一角」って何でしょうか
-
COBOLで全角変換を行いた...
-
LaTeXで半角カンマと全角カンマ...
-
プログラミングでは、半角括弧...
-
VBでのカナの自動入力方法について
-
VBで、String型のデータが、...
-
いまスマホからカードの申込み...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
住宅にカナを入力する際に丁目...
-
英数字のみ全角から半角に変換
-
VBA 文字に半角が含まれて...
-
IEからEdgeへの移行に伴うIMEの...
-
全角英数字の必要性が理解できない
-
COBOL・全角判定
-
word差し込み印刷 半角カタカ...
-
VB.net、テキストボックス入力...
-
char型全角数字から、int型半角...
-
プログラミングでは、半角括弧...
-
メモ帳の段落の揃え方
-
エクセルにMicrosoft Barcode C...
-
エクセルの検索が正しくできな...
-
封筒の宛先で縦書きの書き方
-
エクセルでの”々”の扱い
-
全角/半角キーをSendkeys関数で...
-
.NET3.5におけるキーボードの「...
-
VBで、String型のデータが、...
-
Accessで日付や数値を全角で表...
-
明細書の英数字の全角・半角に...
おすすめ情報
tom04さん、さっそくのご回答ありがとうございます。
私の質問の仕方が悪かったようで申し訳ありません。
ある特定の単語(漢字、ひらがな、カタカナ、アルファベット)を検索し、
オートシェイプ内に合致した文字列があった場合は、それを赤文字にしたいのです。
画像は実行後のイメージです。
お手数をおかけしますが、よろしくお願いします。