
No.3ベストアンサー
- 回答日時:
No1です。
>次の色を変えたいbの位置はaの文字数によって変わってくるかなと、、、。
>これを特定することは知識のある方なら可能な気がしますが~
連結する各文字列はわかっているのでしょうから、文字数を数えれば可能と思います。
>色を変えたい文字データはab2つあり、その他の固定文字データABCと3つ。
>最終的にAaBbCというような文字列にしてセル内に入力する
文字列の断片が5つと限定してよいのであれば、固定処理で良いのでさほど難しくはありません。
以下のような、プロシージャを用意しておいて、上記の例で言えば
Call word2color(Range("A1"), "AA", "a", "BB", "b", "CC")
のような形式で呼び出すと
・指定セル(=上記ではA1)に「AAaBBbCC」の文字が入力され
・「a」と「b」の部分だけ文字色が赤になります。
※ 引数のチェックはごく簡略化してありますが、引数がおかしい場合、セル値は「#VALUE!」エラーになります。
以下、ご参考までに。
Sub word2color(r As Range, ParamArray st())
Dim i As Long, f As Boolean
Dim L(0 To 5) As Long, v As String
If UBound(st) = 4 Then
f = True
L(0) = 1
For i = 0 To 4
If VarType(st(i)) <> 8 Then f = False: Exit For
If Len(st(i)) = 0 Then f = False: Exit For
L(i + 1) = L(i) + Len(st(i))
v = v & st(i)
Next i
End If
If f Then
r.Value = v
r.Characters(Start:=L(1), Length:=L(2) - L(1)).Font.Color = vbRed
r.Characters(Start:=L(3), Length:=L(4) - L(3)).Font.Color = vbRed
Else
r.Value = CVErr(xlErrValue)
End If
End Sub
fujillin様、ご丁寧にありがとうございます。word2colorのコード、残念ながら私のついて行けるレベルでないようです。今回の最大の収穫は、文字変数に色を指定するなんてできないとはっきりわかったこと。残念ながらその程度のレベルです。
時間のあるときに、いただいたコードを試したりしたいと思います。
No.4
- 回答日時:
No2です。
参考までに、No2の図のように赤色をつけるマクロです。
Public Sub 文字を赤に設定()
Dim wrow As Long
Dim str1_len As Long
Dim str1 As String
Dim str2 As String
Dim str3 As String
For wrow = 2 To 4
str1 = Cells(wrow, 1).Value
str2 = Cells(wrow, 2).Value
str3 = str1 & str2
str1_len = Len(str1)
Cells(wrow, 3).Value = str3
Cells(wrow, 3).Characters(Start:=1, Length:=str1_len).Font.Color = -16776961
Next
End Sub
No.2
- 回答日時:
変数に直接色を指定することは、出来ません。
その変数の文字をセルに格納した後に、そのセル内の文字に対して色を設定することは可能です。
添付図のように
A列の文字とB列の文字を結合し、その結果をC列に格納したとき、
A列の文字のみ赤色に設定することは可能です。
その場合、A列の文字の長さを記憶し、その長さぶんだけ、赤色に設定する
ことになります。
上記のようなマクロで良ければ提供可能です。

tatsumaru77樣、回答ありがとうございます。今回は課題を自分のレベルで短時間に解決できそうもなく、特定文字を赤にすることの必要性は低いので、いただいた内容を参考にするなどして今後の勉強材料にしたいと思います。
No.1
- 回答日時:
こんにちは
VBAの文字変数は文字列のコードを持っているだけですので、色の情報は持ちません。
(数字の変数が、色やサイズや背景色などの情報を持たないのと同じです)
そのような情報を持てるようにしたければ、独自のオブジェクト(=クラス)を定義すれば可能と思いますけれど・・
ご質問の内容は「セルの文字列の一部の色を変えたい」ということと思いますけれど、それならば「変数の色を指定する」のではなく、「セルの文字の色を変える」ようになさればよいでしょう。
「セル」は値(=文字列等)の他にも、書式や色、セルサイズ、関数、リンクなどなど、様々な情報を持てるオブジェクトになっていますので、セル上であれば当然ながら文字列の一部に色を付けることも可能です。
ご質問のようなことをなさりたければ、「セルの一部の文字を変える」処理を行えばよいでしょう。
コードは「マクロの記録」を利用して、一度実行してみれば要領がわかると思います。
検索してみても、解説サイトは数多く見つけられると思います。
https://www.moug.net/tech/exvba/0110016.html
https://workteria.forward-soft.co.jp/blog/detail …
https://kirinote.com/excelvba-char-color/
早速にありがとうございます。マクロの記録でセル内の文字データの一部の色を変えることやってみました。文字データの先頭を指定し、そこから○文字分あとの文字の色を変えるといった構成になっています。。
実は、色を変えたい文字データはab2つあり、その他の固定文字データABCと3つ。
最終的にAaBbCというような文字列にしてセル内に入力するというようなコードの構成です。
最初のaの位置は特定できますが、次の色を変えたいbの位置はaの文字数によって変わってくるかなと、、、。これを特定することは知識のある方なら可能な気がしますが、今回やろうとしていることは、そこまで手間かけてやるまでのことではないので、断念します。
初心者ゆえ、変数で取得した文字データであっても色などの指定ができるのではと考えました、、、、。それは無理と教えていただき感謝しています。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) ExcelデータのMacとWindowsの文字化け対策について教えてください‼︎ 私はMacを使って 1 2022/08/22 12:46
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- その他(プログラミング・Web制作) COBOL数値転記をCOPY句内での仕様 6 2022/06/15 18:48
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
VBAで特定の文字を探して隣のセルに色を付けたい
Excel(エクセル)
-
-
4
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
7
エクセルVBA:リストに登録した単語と一致する文字色のみを、変更する方法
Excel(エクセル)
-
8
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
9
マクロでセルの右から2番目の文字を取得する方法を教えてください
Excel(エクセル)
-
10
【Excel VBA】セル内テキストの、フォントカラーが変更されている範囲の取得
Visual Basic(VBA)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
【ExcelVBA】sheet作成時にマクロを埋め込みたい
その他(Microsoft Office)
-
13
excelの不要な行の削除ができない!
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba テキストボックスとリフト...
-
貼り付けで複数セルに貼り付けたい
-
(Excel)数字記入セルの数値の後...
-
数式を残したまま、別のセルに...
-
セルをクリック⇒そのセルに入力...
-
枠に収まらない文字を非表示に...
-
エクセルで指定したセルのどれ...
-
Excel 例A(1+9) のように番地の...
-
エクセルの一つのセルに複数の...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
excelの特定のセルの隣のセル指...
-
エクセルの書式設定の表示形式...
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
【Excel】 セルの色での判断は...
-
EXCELのセルの中の半角カンマの...
-
エクセルで、複数の参照範囲を...
-
エクセルのセルの枠を超えて文...
-
Excelで住所を2つ(町名迄と番...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルの書式設定の表示形式...
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
おすすめ情報