No.1ベストアンサー
- 回答日時:
>これまでの質問も参照してみましたが、うまくいきませんでした。
どの質問をご覧になって、何がどうダメだったのですか? それを書いた方が解決が早いと思います。
以下URLは年末に回答したものです。参考にはなると思います。
http://oshiete1.goo.ne.jp/qa3628390.html
>0~9なら赤、10~19なら緑、20~29なら青のような
ならば
Case Is < 10
r.Interior.ColorIndex = 3
Case Is < 20
r.Interior.ColorIndex = 4
以下略
のようにすればよいです。
お忙しい中回答していただきありがとうございます。
>どの質問をご覧になって、何がどうダメだったのですか? それを書いた方が解決が早いと思います。
確かにそのとおりでした。申し訳ありません。
確認不足で当該の回答には目を通していませんでした。
二つのコードをあわせて利用したところ、考えていたとおりに作動いたしました。ありがとうございます。
これから色の設定など少しだけ修正を加えた後利用させていただこうかと思います。
ありがとうございました。
No.2
- 回答日時:
モジュールで自作関数を作る方法です。
モジュールがいやなら読み飛ばしてください。
ユーザ関数内でプロパティを変更できないので、情報を保存しておいて、Worksheet_Calculate()イベントで設定します。
標準モジュールと自作関数を使用するシート(例えばsheet1)のモジュールに以下をコピーします。
---標準モジュール ここから---
Public co As New Collection
'インテリアカラー情報保存
Function getInteriorColor(r As Range) As Variant
Dim c As Integer
Select Case r.Value
'以下に条件と背景色を記述
Case Is < 10: c = 5 '青
Case Is < 20: c = 4 '緑
Case Is < 30: c = 8 '水色
Case Is < 40: c = 3 '赤
Case Is < 50: c = 7 '紫
Case Is < 60: c = 6 '黄色
Case Is < 70: c = 2 '白
Case Else: c = 1 '黒
End Select
co.Add Array(r, c) '情報を保存
getInteriorColor = ""'戻り値が必要なので""を返す
End Function
'インテリアカラー情報設定(Worksheet_Calculateイベントで呼ぶ)
Function setInteriorColor()
Dim i As Integer
For i = 1 To co.Count
co.Item(1)(0).Interior.ColorIndex = co.Item(1)(1)
co.Remove 1
Next
End Function
---標準モジュール ここまで---
---自作関数を使用するsheetのモジュール ここから---
Private Sub Worksheet_Calculate()
setInteriorColor
End Sub
---自作関数を使用するsheetのモジュール ここまで---
以上でB1(実際はどこでもいい)に
=getInteriorcolor(A1)
とすると、A1の値(計算式でも良い)によってA1の背景色が変わります。
最初に「条件と背景色を記述」の部分を設定しておけば、普通の関数のように使えます。
[注意]
getInteriorcolorを使用するsheetに、忘れずにWorksheet_Calculate()イベントをコピーしてください。
複数のシートがある場合は、各シートに必要です。
早々のご回答ありがとうございます。
モジュールを操作する、という手もあるのですね。
残念ながら自身がコードの記述についてはからきしなので内容は殆ど理解できませんが、試行錯誤して利用させていただこうかと思います。
短文になってしまいましたが、ありがとうございました。
No.3
- 回答日時:
(1)エクセル2007以外は条件付き書式は3色までなので、操作の設定では不可能です。
(2)既出ご回答のよう、VBAでバッチ処理的にセルに値によって色をつけるなら、10種ぐらいは可能(色は56色つけられても、見た人が違いを判別できるのは、そんなに多くないから)と思う。
またさらに下記コードのCase Is < 10: c = 5 '青
などはセルの黒色の文字が見難くなって不適と思う。
例えば Case Is < 10: c = 45 などがお勧め。
(3)(2)はデータが変更されて関数の結果が変わった場合に変化しないので、#2のご回答のようなイベントに持ち込んで、変化を反映するように工夫されたと思う。
ーー
しかしエクセルVBAのFunctionプロシジュアーで、セルの値以外であるセルの書式に当たるセルパターン色を変えられるか疑問。
私の少ない経験ではFunctionプロシジュアーは式を入れるセルの値以外は触らせてくれなかったと思う。VBと違う。
私の経験不足・勉強不足でしたら、#2さんすみません。
ーー
私なりに一部使わせていただいて、下記コードを
Calculateイベントで設定しました。
シートにSUM関数など計算関数があることが条件です。
またセル範囲Range("A1:G20")は、セルの色設定するセルだけに限って、質問者のセルの実情に応じて変えてください。少ない範囲の方が望ましい。
Private Sub Worksheet_Calculate()
MsgBox "再計算された"
Dim cl As Range
For Each cl In Range("A1:G20")
If cl <> "" Then
Select Case cl.Value
Case Is < 10: c = 5 '青 しかし Case Is < 10: c = 45 などがお勧め
Case Is < 20: c = 4 '緑
Case Is < 30: c = 8 '水色
Case Is < 40: c = 3 '赤
Case Is < 50: c = 7 '紫
Case Is < 60: c = 6 '黄色
Case Is < 70: c = 2 '白
Case Else: c = 0 '黒
End Select
cl.Interior.ColorIndex = c
Else
cl.Interior.ColorIndex = xlNone
End If
Next
End Sub
これとても色んなケースで酷使に耐えるかどうか、十分は自信なし。
問題にしているセル以外に、式が設定してあり、そのひぃすうデータが変わっても上記が走ってしまう。Calculate の原因になったセル捕まえるのは、Changeイベントなどを使わないとダメだと思う。
質問者には、>VBについては全く利用したことがないのですが
であれば難しいと思うが、私なりの感想を書きます。
ご回答ありがとうございます。
>またさらに下記コードのCase Is < 10: c = 5 '青
>などはセルの黒色の文字が見難くなって不適と思う。
>例えば Case Is < 10: c = 45 などがお勧め。
など、小さな心遣い痛み入ります。
ほかの方のコードと併せて勉強がてらサンプルに弄らせていただこうと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 数式を使用した条件付き書式が、一つのセルにしか反映されない 3 2022/06/08 23:20
- Excel(エクセル) エクセルで条件付き書式を使わずにセルの文字の色を変える方法を教えて下さい 8 2023/07/28 01:15
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) VBAで自動集計(特定セルコピー月ごとに値貼り付け)したい。 6 2023/06/25 11:37
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- その他(Microsoft Office) エクセルで、土日や祝祭日に色をつけるには?Part2 5 2022/05/05 09:51
- 会計ソフト・業務用ソフト エクセル 背景色のついたセル位置を参考にして固定の数値を取得する 4 2022/07/11 08:44
- Visual Basic(VBA) vbaで条件付き書式を設定したときの適用範囲について 1 2023/07/17 23:14
- Excel(エクセル) エクセルでセルの日付を和暦表示設定にしたらおかしなことに? 3 2022/05/25 11:47
- Excel(エクセル) 【Excel:条件付き書式 データバー】 正負の軸の位置を変更する方法を教えてください 3 2023/01/08 19:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
対象セル内(複数)が埋まった...
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
セルをクリック⇒そのセルに入力...
-
エクセル 足して割る
-
エクセル オートフィルタで絞...
-
EXCEL VBA セルに既に入...
-
(Excel)数字記入セルの数値の後...
-
Excelで住所を2つ(町名迄と番...
-
Excelでのコメント表示位置
-
複数のセルのいずれかに数字が...
-
Excelのチェックボックスの使い...
-
Excel2003 の『コメント』の編...
-
Excelで数式内の文字色を一部だ...
-
【Excel】 セルの色での判断は...
-
枠に収まらない文字を非表示に...
-
Excel:指定セル以下全てのセル...
-
エクセルのセルの枠を超えて文...
-
セルに特定の色が付いていたら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
セルをクリック⇒そのセルに入力...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
excelのCOUNTIF関数で、『範囲=...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excel2003 の『コメント』の編...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
excelの特定のセルの隣のセル指...
おすすめ情報