![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
使用アプリ: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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
テキストボックス中の文字列の色を変更する方法は?
Excel(エクセル)
-
マクロでオートシェイプ内の文字の色を変更したい。
Excel(エクセル)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
-
4
Excel VBA インデックスの境界について
Excel(エクセル)
-
5
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
6
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
7
Excelで、図形内の文字をセルに抽出したいです
Excel(エクセル)
-
8
エクセルマクロ 赤色の文字を検索するについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
住宅にカナを入力する際に丁目...
-
改行のないテキストを指定バイ...
-
COBOL・全角判定
-
全角数字を半角数字にする方法
-
IEからEdgeへの移行に伴うIMEの...
-
char型全角数字から、int型半角...
-
ダブルコーテーションの置換
-
perl 初めてのプログラムにエラ...
-
全角/半角キーをSendkeys関数で...
-
VBA Shift-JISをJISに変換する...
-
word差し込み印刷 半角カタカ...
-
全角英数字を半角英数字に変換...
-
全角英数字の必要性が理解できない
-
POM
-
コンボボックスに貼り付け文字...
-
Visual Studioで ユニコード "...
-
VB.net、テキストボックス入力...
-
右クリックで、gooleサーチを使...
-
いまスマホからカードの申込み...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
F9キーについて。
-
住宅にカナを入力する際に丁目...
-
VBA 文字に半角が含まれて...
-
IEからEdgeへの移行に伴うIMEの...
-
全角英数字の必要性が理解できない
-
VB.net、テキストボックス入力...
-
エクセルにMicrosoft Barcode C...
-
word差し込み印刷 半角カタカ...
-
COBOL・全角判定
-
VBで、String型のデータが、...
-
char型全角数字から、int型半角...
-
ダブルコーテーションの置換
-
.NET3.5におけるキーボードの「...
-
封筒の宛先で縦書きの書き方
-
エクセルでの”々”の扱い
-
COBOLでの全角文字の判定をした...
-
プログラミングでは、半角括弧...
-
全角入力
-
[VBScript]バイト長の判定
おすすめ情報
tom04さん、さっそくのご回答ありがとうございます。
私の質問の仕方が悪かったようで申し訳ありません。
ある特定の単語(漢字、ひらがな、カタカナ、アルファベット)を検索し、
オートシェイプ内に合致した文字列があった場合は、それを赤文字にしたいのです。
画像は実行後のイメージです。
お手数をおかけしますが、よろしくお願いします。