
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
5
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
6
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
7
【ExcelVBA】sheet作成時にマクロを埋め込みたい
その他(Microsoft Office)
-
8
エクセルVBA:リストに登録した単語と一致する文字色のみを、変更する方法
Excel(エクセル)
-
9
VBAで特定の文字を探して隣のセルに色を付けたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
EXCEL VBA セルに既に入...
-
Excel for Mac使用中ポインタが...
-
vba テキストボックスとリフト...
-
枠に収まらない文字を非表示に...
-
Excelで数式内の文字色を一部だ...
-
ハイパーリンクの参照セルのズ...
-
Excel 例A(1+9) のように番地の...
-
エクセル セルの中に縦線が入っ...
-
エクセルの書式設定の表示形式...
-
excelの特定のセルの隣のセル指...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
セルをクリック⇒そのセルに入力...
-
VBAでセルを指定した画像のコピ...
-
Excelでのコメント表示位置
-
エクセルでオブジェクトを常に...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba テキストボックスとリフト...
-
貼り付けで複数セルに貼り付けたい
-
エクセルで指定したセルのどれ...
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセル
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
エクセル オートフィルタで絞...
-
エクセルの書式設定の表示形式...
-
Excel 例A(1+9) のように番地の...
-
エクセルの一つのセルに複数の...
-
excelの特定のセルの隣のセル指...
-
EXCEL VBA セルに既に入...
-
Excelでのコメント表示位置
-
エクセルのセルの枠を超えて文...
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
【Excel】 セルの色での判断は...
おすすめ情報