使用アプリ: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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
マクロでオートシェイプ内の文字の色を変更したい。
Excel(エクセル)
-
テキストボックス中の文字列の色を変更する方法は?
Excel(エクセル)
-
Excel VBA インデックスの境界について
Excel(エクセル)
-
-
4
Excelで、図形内の文字をセルに抽出したいです
Excel(エクセル)
-
5
VBA 図形のテキスト取得
Excel(エクセル)
-
6
エクセルマクロ 赤色の文字を検索するについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
VBAの文字列の中に”(全角のダブ...
-
Accessで日付や数値を全角で表...
-
エクセルの検索が正しくできな...
-
Accessのテキストボックスの入...
-
小説の点々は……と繋がらなくて...
-
VBA 文字に半角が含まれて...
-
「 _ _ 」の正式名称を...
-
住宅にカナを入力する際に丁目...
-
プログラミングでは、半角括弧...
-
Accessでのグループ化で全角・...
-
[Excel VBA] ODBCによる外部デ...
-
コマンドプロンプト 全角を含ん...
-
IEからEdgeへの移行に伴うIMEの...
-
Excel VBAでオートシェイプ内の...
-
エクセルでの”々”の扱い
-
Excelの中に全角ひらがな、漢字...
-
VBScriptの正規表現で半角スペ...
-
全角文字だけ抜き出したい
-
エクセルにMicrosoft Barcode C...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
住宅にカナを入力する際に丁目...
-
全角英数字の必要性が理解できない
-
Excel関数またはVBAでの質問に...
-
エクセルにMicrosoft Barcode C...
-
IEからEdgeへの移行に伴うIMEの...
-
VBA 文字に半角が含まれて...
-
COBOL・全角判定
-
プログラミングでは、半角括弧...
-
word差し込み印刷 半角カタカ...
-
メモ帳の段落の揃え方
-
よくアカウント等に使われる 半...
-
Accessのテキストボックスの入...
-
ダブルコーテーションの置換
-
エクセルでの”々”の扱い
-
小説の点々は……と繋がらなくて...
-
大文字と全角文字は同じ意味で...
-
[VBScript]バイト長の判定
-
封筒の宛先で縦書きの書き方
-
VBで、String型のデータが、...
おすすめ情報
tom04さん、さっそくのご回答ありがとうございます。
私の質問の仕方が悪かったようで申し訳ありません。
ある特定の単語(漢字、ひらがな、カタカナ、アルファベット)を検索し、
オートシェイプ内に合致した文字列があった場合は、それを赤文字にしたいのです。
画像は実行後のイメージです。
お手数をおかけしますが、よろしくお願いします。