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でこういう年を切り替えられる簡易なカレンダーを作ったのですが、 年や月を変えると、色が付い
Excel(エクセル)
-
【マクロ】for nextステートメントがわかりません。例あり。
Excel(エクセル)
-
数値から名前が作成できなくなっているッ!?
Excel(エクセル)
-
-
4
複数エクセルファイルの合成
Excel(エクセル)
-
5
エクセルのセル統合について
Excel(エクセル)
-
6
同一セルに入力規則のリストと参照する設定併用できるような設定はありますでしょうか!!
Excel(エクセル)
-
7
excelの不要な行の削除ができない!
Excel(エクセル)
-
8
他人が作ったマクロの理解
Excel(エクセル)
-
9
エクセルで⑤番の操作が分かりません。どういう関数が良いんですか?
Excel(エクセル)
-
10
エクセルの関数でわからないことあるのでコード付きで教えてください
Excel(エクセル)
-
11
Excelのマクロファイルを開くと下記のエラーがでます。
Excel(エクセル)
-
12
1行目のデータ(A1:G1)をコピーして、2~49999行へ貼り付ける効率的な操作方法は?
Excel(エクセル)
-
13
エクセルで相対パスの書き方を教えてください
Excel(エクセル)
-
14
なぜか「Nextに対応するForがありません」
Excel(エクセル)
-
15
IF関数
Excel(エクセル)
-
16
エクセルの表の参照値から円を取って数字で扱えるようにしたい
Excel(エクセル)
-
17
Excelの関数で起きた現象の原因がわかりません。
Excel(エクセル)
-
18
“丸(〇/○/◯)”に似た文字…
Excel(エクセル)
-
19
VBA(えくせる)ってなんでメンテできない人が多いんですか?
Excel(エクセル)
-
20
Excelの関数に関する質問です
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
セルをクリック⇒そのセルに入力...
-
エクセル 足して割る
-
EXCEL VBA セルに既に入...
-
【Excel】 セルの色での判断は...
-
【エクセル】IF関数 Aまたは...
-
Excelで数式内の文字色を一部だ...
-
対象セル内(複数)が埋まった...
-
エクセルの数式について教えて...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
Excel2003 の『コメント』の編...
-
【Excel】特定の文字から文字ま...
-
セルに特定の色が付いていたら...
-
枠に収まらない文字を非表示に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 足して割る
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
Excelで数式内の文字色を一部だ...
-
Excelでのコメント表示位置
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
セルをクリック⇒そのセルに入力...
-
【Excel】 セルの色での判断は...
-
エクセルの一つのセルに複数の...
-
EXCEL VBA セルに既に入...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
excelのCOUNTIF関数で、『範囲=...
-
(Excel)数字記入セルの数値の後...
-
枠に収まらない文字を非表示に...
-
Excel2003 の『コメント』の編...
-
Excel 例A(1+9) のように番地の...
-
複数のセルのいずれかに数字が...
おすすめ情報