- 締切済み
エクセルの質問です
1)名前の定義で「リスト」とつけます。 2)リストの中には「テレビ」「ビデオ」「DVD」「PC」とあるとします。 3)別シートで=INDEX(リスト,ROW(A1))としオートフィルします。 3)で出たリストのフォントの色(一文字づつ違う色を指定したいと思っています)を変えていきたいのですが、関数の戻り値のフォントの変え方がわかりません。 どなたかご教授をお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- xls88
- ベストアンサー率56% (669/1189)
関数の戻り値を、一文字ごとに異なる色にすることはできません。 「値」に置き換えて行うことになります。 「値」に置き換えても大丈夫ですか?
- imogasi
- ベストアンサー率27% (4737/17069)
この質問内容と 1)-3)jは関係が無く、書く必要は無い。 「セルの文字列の一文字づつ違う色を指定したいと書けばよい。」 どんなプロセスで文字列がセルにセットされたか、回答に影響すると 思いますか。 ーー 一文字ずつ違う色を設定したいということだが どういうように配色したいのか質問に書いてない。 下記私のコード例のようなのは、色の濃淡の感じががばらばらで 使い物にならないように思う。見づらい。 ーー 既に回答があるが、エクセル関数では 文字色の取得 文字色の設定 はできない。 エクセルの関数とその引数は、セルの「値」だけを見たり設置するもの。エクセルの関数の基本的なことを確信を持ってない質問が、ままある。 ーーー それに質問者の書いた = InStrRev(c, Mytext) から、推察すると、テレビとかの語句全体を色を変えるのか、テとレとビの各々を違う色にしたいのか判らない。 コード例が質問の主旨を混乱させている例です。 ーー Sub Font_Color_D() Dim c As Range, i As Integer, j As Integer Dim Mytext As String Application.ScreenUpdating = False For Each c In ActiveSheet.UsedRange 'x = 3 For j = 1 To Len(c) c.Characters(j, 1).Font.ColorIndex = x x = x + 2 If x > 30 Then x = 3 Next j Next Application.ScreenUpdating = True End Sub これではしたい結果とどう違うのか。
- mshr1962
- ベストアンサー率39% (7417/18945)
>Dを検索しているのにDVD全部が赤に変わってしまいます 当然でしょう。jにはテキストの文字数がセットされてますから c.Characters(i, j).Font.ColorIndex = 3 だと、DVDの1桁目から3文字色を変えることになります。 Dが一つだけなら c.Characters(i, 1).Font.ColorIndex = 3 とする Dが複数ならStrRevでなく1文字ずつチェックするルーチンが必要になります。
- xls88
- ベストアンサー率56% (669/1189)
一文字づつフォントの色を変えるのですか? マクロを使わないと無理だと思います。
- KURUMITO
- ベストアンサー率42% (1835/4283)
マクロを使わない限り基本的に色などの書式情報を得ることができません。
補足
そうですねマクロを使いたいのですがコードがうまいこといきません なにかいいサイトはないでしょうか?
補足
そうですね マクロを使いたいのですが コードは Sub Font_Color_D() Dim c As Range, i As Integer, j As Integer Dim Mytext As String Mytext = "D" j = Len(Mytext) Application.ScreenUpdating = False For Each c In ActiveSheet.UsedRange i = InStrRev(c, Mytext) If i > 0 Then c.Characters(i, j).Font.ColorIndex = 3 Next Application.ScreenUpdating = True End Sub としてるのですがその全部のフォントの色が変わってしまいます。 Dを検索しているのにDVD全部が赤に変わってしまいます