質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

受付中

エクセルマクロで「セル内の文字の変更した部分だけを赤文字に変更」したい。

aarai
aarai

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

4回答

0リアクション

0クリップ

585閲覧

投稿2022/08/22 23:49

エクセルマクロで「セル内の文字の変更した部分だけを赤文字に変更」したい。

マクロ初心者です。
現在、Worksheetでターゲット使用してセルを実行した部分を赤文字に変更するコードを使用しています。
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.ColorIndex = 3 End Sub

こちらを修正して「セル内の文字の変更した部分だけを赤文字に変更」にしたいです。
いろいろ検索してみましたが、セルの範囲を設定Range("A1:Y65")、変更文字の設定Characters(Start:=4, Length:=3)などが必要と記載されています。

シート1内のセル範囲やセル内の文字数は関係なしに、修正したセルで、そのセルによって Characters(Start:=4, Length:=3)が違う内容のデータは「セル内の文字の変更した部分だけを赤文字に変更」はできないでしょうか?

そもそも、Range("A1:Y65")のようにセル範囲設定はできますが、「シート全体が対象」のコードが分かりません。
セル内の設定も同様に例えば<UFB-2F-3007-PWH同等品>という内容を、<UFB-2F-5002-PWH同等品>と5002だけを赤文字にしたい。他のセルでは<UWV-2F-3007-PWH同等品>とWVだけを赤文字にしたい。という事です。
「Characters(Start:=4, Length:=3)の設定を行わないコードも探してみましたが見つかりませんでした。

Windows10 Excel® 2019 MSO 64ビット使用です。

よろしくお願い致します。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/08/23 03:27

こちらの質問が複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

hatena19

2022/08/23 02:30

「セル内の文字の変更した部分」というのは何と比較して変更したということでしょうか。 質問の内容でいくと、「<UFB-2F-3007-PWH同等品>」という値がどこかのセルにあって、それと比較してということでしょうか。 それとも、編集したセルの編集後の値と編集前の値と比較してという意味でしょうか。
aarai

2022/08/23 02:56

ご質問ありがとうございます。 何かと比較とはではなく、単純に手入力で書き換えて変更するだけです。名前ですと<山田 太郎><山口 太郎>と書き換えた時に<口>だけを赤文字にしたいということです。シート内のすべてのセル内2文字目ですといいのですが、セルによってstart文字目が違うのです。 こちらの内容で伝わりましたでしょうか? よろしくお願い致します。
baitokun

2022/08/23 04:13 編集

「<UFB-2F-3007-PWH同等品>という内容を、<UFB-2F-5002-PWH同等品>と5002だけを赤文字にしたい。」 この場合5と2の2文字を赤にするんじゃなくて「5002」の4文字を赤にするってことは、区切り文字の認識や単語の解析みたいなのが必要なんで、けっこうむずかしいんじゃないですかね。
aarai

2022/08/23 04:07

コメントとご回答ありがとうございます。 不快な思いをさせてしまい申し訳ございません。 セル内の範囲を設定しないコードがいくら検索しても見つからなかったので、ご質問させていただきました。ど素人ですので丸投げのような質問になってしまい失礼致しました。ご回答、参考にさせ頂きます。 ありがとうございました。
hatena19

2022/08/23 04:47

不一致の判定の仕様を明確にしないと、いろいろ難しいですね。 例えば、- で区切って比較するとして、 3007 と 5002 だと、5002すべて赤字、 UFB と UWV だと、WV だけ赤字、 となると、仕様として矛盾がありますよね。 あと、複数セルを一度に変更した場合も考慮する必要があるのか、どうかも、提示してください。
aarai

2022/08/23 05:14

コメントありがとうございます。 そうですね、何文字目と決めれないのが難しいです。 3007と5002ですと、5と2という設定でも大丈夫です。見え方としては5002すべて赤字がベストですが、 手修正を行えますので、5と2で大丈夫です。「UFB と UWV だと、WV だけ赤字」というように。 「あと、複数セルを一度に変更した場合も考慮する必要があるのか」ですが、あります。 それは、「3007 」が複数ありすべて「5002」へ一度に変更する。という感じです。 よろしくお願い致します。
hatena19

2022/08/23 05:28

ここでやり取りした結果は質問を編集して反映させてください。ここは「質問への追記・修正の依頼」ですので。
aarai

2022/08/23 05:32

了解致しました。本日中は無理なのですが、自分なりに作成してみてまた結果を反映させていただきます。 ありがとうございます。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。