[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『時間に連動してセルの色を変えるには』(りばさん)
宜しくお願いします。
時間に連動してセルもしくは文字の色を変える事は可能でしょうか?
何時〜何時までは黄色、何時〜何時までは赤、といった感じで一日を2色に分けれれば
良いのですが。
現在の時刻によって、セルの色を変えるということですか? または、入力されている時刻によって色を変えるというのですか?
どちらも条件付き書式でできます。(tora)
例えばA1セルに条件付き書式で、 数式が→ =AND(A1<>"",(NOW()-TODAY())>="12:00"*1,(NOW()-TODAY())<="15:00"*1)
として適当な書式を設定。 A1が空白でなく、12:00以降、15:00までその書式が設定されます。 (tora)
A1−A2 という数式が入力されている A3のセルの色を、
9時〜12時 と 13時〜17時までの間は黄色に、
それ以外の時間は、常に赤色に、
したいです。
本当に申し訳ないのですが、宜しくお願いします。
前の回答と同じことですが、 色を変えるセルには数式が入力されているとのことですから、 今回はデータがあるなしのチェックは省きます。
最初にA3セルの色を赤色に設定します。
次に、A3セルを選択し、条件付き書式で、 数式が→ =AND((NOW()-TODAY())>="9:00"*1,(NOW()-TODAY()<="12:00"*1)) で、セルの色を黄色に設定します。
続いて書式の「追加」をクリックして同様に13:00から17:00までを黄色に設定します。 これでできるはずですが・・・ (tora)
条件付き書式はファイルを開いたとき、または条件付き書式を設定したセルが更新されたときにしかチェックを行いません。
なので例えばずっと開いておいて設定した時間を過ぎてもそのままでは色が変わりませんがその点は確認していますか? (独覚)
=AND(A1<>"",(NOW()-TODAY())>="12:00"*1,(NOW()-TODAY())<="15:00"*1)
上記のA1の所を変えてなかったせいでした。
toraさん、何度もご丁寧にありがとうございました。
大変お手数お掛け致しました。
独覚さんレスありがとうございます。
いえ、確認していません。
使用する時はずっと開いたままなのですが、数式が入っているせいで、セルの数字は勝手に変動している
状態です。
この使い方だと指定した時間が経過しても、セルの数字が変動するまで色が変わらないということなのでしょうか?
指定した時間に必ず変わる様にしたいのですが・・。
ちょっと訂正があります(汗
>条件付き書式を設定したセルが更新されたときにしか と書きましたがブックが変更されればチェックがなされます。
なので、設定したセル以外が変更されてもチェックがなされますが何も変更されていない間は色が変わらないことになります。 (独覚)
VBAでOntimeなどで制御すれば出来るのでしょうけど・・・ あまりにも不安定になりそうですし、コーディングも面倒なのでお勧めしません。 (momo)
分かりました。お勧めされません。
というより、VBAだとまったくもって手が出ません。笑
とりあえず現行のままで使ってみようと思います。
toraさん、独覚さん、momoさん
本当にありがとうございました。
またチェックすることもあると思うので、何か良い案がありましたら、レスお願いします。
使い方如何でしょうけど、開きっぱなしにするだけってことはないでしょうし、見るときには クリックなりなんなりしますよね
マクロの場合こんな感じ? Private Sub Worksheet_SelectionChange(ByVal Target As Range) If (Time < TimeValue("9:00") Or Time > TimeValue("17:00")) Or (Time >= TimeValue("12:00") And Time <= TimeValue("13:00")) Then Range("A1").Interior.Color = vbRed Else Range("A1").Interior.Color = vbYellow End If End Sub
(通りすがり)
それが開きっぱなしなんですよ。
見る時にクリック・・・します。
マクロについてあまりにも勉強不足なので・・汗
ついでなんですが、セルの色じゃなくて、文字の色を変えたい場合の数式?も教えて頂けないでしょうか?
割と重要なのは >開きっぱなしにするだけ ってところで、そのパソコンで他の作業もしますよね。 エクセルやらワードやらサイト閲覧やら。
エクセルのイベントで、シートをアクティブにしたら・ウィンドウをアクティブにしたら またはその逆、選択範囲を変更したら、セルの値を変更したらとマクロを実行させる「イベント」が もりもりあります。
なので するだけ はないかなーと。
で、この場合、該当シートの選択範囲が変更されたら(セルをどこかクリックしたら)実行されます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If (Time < TimeValue("9:00") Or Time > TimeValue("17:00")) Or (Time >= TimeValue("12:00") And Time <= TimeValue("13:00")) Then Range("A1").Interior.Color = RGB(255, 0, 0) Range("A1").Font.Color = RGB(0, 0, 255) Else Range("A1").Interior.Color = RGB(255, 255, 0) Range("A1").Font.Color = RGB(255, 0, 0) End If End Sub
該当シート名の部分を右クリック > コードの表示 ぺたっと貼り付けてください。
んで、RGBはRedGreenBlueの頭文字で、0〜255の間で設定します。 ColorIndexのほうがいいのかな。。。
(通りすがり)
質問を重ねてばかりで大変申し訳ないです。
いやいやいやいやいやいや… 4パターンに見えるんですが。 とりあえず複数セルの詳細ください。 4パターン全部違うセルの場合構造全部変える必要があるかもしれません。 あと ←に半角スペースを入れてから文字を入れるとちゃんと改行されます。
9時〜14時の場合 [ ]のセルの色を[ ]に変える それ以外は[ ]
9時〜12時の場合 [ ]のセルの色を[ ]に変える それ以外は[ ]
13時〜17時の場合 [ ]のセルの色を[ ]に変える それ以外は[ ]
18時〜22時の場合 [ ]のセルの色を[ ]に変える それ以外は[ ]
さあ他に条件はなんでっしゃろ!
(通りすがり)
すいません、お手数かけます。 文字の色だけ変える所も入れると4パターンです。汗 Aセル [ 赤 ]のセルの色を[ 9時〜14時だけ 黄色 ]に変える それ以外は[ 文字の色は常に赤 ]
Bセル [ 赤 ]のセルの色を[ 一日の内、9時〜12時と13時〜17時の間だけ 黄色 ]に変える それ以外は[ 文字の色は常に赤 ]
Cセル [ 赤 ]のセルの色を[ 黄色 ]に変える それ以外は[ 一日の内、9時〜12時と13時〜17時と18時〜122時の間だけ 黄色 ]に変える それ以外は[ 文字の色は常に赤 ]
Dセル セルの色は変えない [ 青色 ]の文字の色を[ 一日の内、9時〜12時と13時〜17時の間だけ 黄色 ]に変える 要件はなんでっしゃろって言って頂いたので、失礼ですが投げさせて頂きます!笑
聞き方が悪かったのかしら…
判断基準はセルの色なんですか?
9時〜14時の場合 A1のセルの色を黄色に変える。 それ以外は文字を赤に変える。
9時〜12時 または 13時〜17時の場合 B1のセルの色を黄色に変える それ以外の時間は文字を赤に変える
9時〜12時 または 14時〜17時 または 18時〜22時の場合 C1のセルの色を黄色に変える それ以外の場合文字の色を赤に変える
9時〜12時 または 13時〜17時の場合 D1の文字の色を黄色に変える それ以外の場合は文字の色を青に変える
でいいでしょうか?
(通りすがり)
はい、その通りです。 「ここのセルをこうしたい」から始まってるもので・・説明の仕方が悪かったです。 すいませんでした。 宜しくお願い致します。(りばさん)
あとで読んでわかりやすいような条件分岐にしてみました。 '===ここから=== Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim AM1 As Boolean, AM2 As Boolean, PM1 As Boolean, PM2 As Boolean, PM3 As Boolean AM1 = False: AM2 = False: PM1 = False: PM2 = False: PM3 = False
If Time >= TimeValue("9:00") And Time <= TimeValue("12:00") Then AM1 = True If Time >= TimeValue("13:00") And Time <= TimeValue("17:00") Then PM1 = True If Time >= TimeValue("9:00") And Time <= TimeValue("14:00") Then AM2 = True If Time >= TimeValue("14:00") And Time <= TimeValue("17:00") Then PM2 = True If Time >= TimeValue("18:00") And Time <= TimeValue("22:00") Then PM3 = True
With Range("A1") .Interior.ColorIndex = xlNone .Font.Color = RGB(255, 0, 0) End With
With Range("B1") .Interior.ColorIndex = xlNone .Font.Color = RGB(255, 0, 0) End With
With Range("C1") .Interior.ColorIndex = xlNone .Font.Color = RGB(255, 0, 0) End With
Range("D1").Font.Color = RGB(0, 0, 255)
If AM1 Then Range("B1").Interior.Color = RGB(255, 255, 0): Range("B1").Font.ColorIndex = xlAutomatic Range("C1").Interior.Color = RGB(255, 255, 0): Range("C1").Font.ColorIndex = xlAutomatic Range("D1").Font.Color = RGB(255, 255, 0) End If
If AM2 Then Range("A1").Interior.Color = RGB(255, 255, 0): Range("A1").Font.ColorIndex = xlAutomatic
If PM1 Then Range("B1").Interior.Color = RGB(255, 255, 0): Range("B1").Font.ColorIndex = xlAutomatic Range("D1").Font.Color = RGB(255, 255, 0) End If
If PM2 Then Range("C1").Interior.Color = RGB(255, 255, 0): Range("C1").Font.ColorIndex = xlAutomatic
If PM3 Then Range("C1").Interior.Color = RGB(255, 255, 0): Range("C1").Font.ColorIndex = xlAutomatic
End Sub '===ここまで
たぶん動くと思うけど…
(通りすがり)
通りすがりさん、本当にありがとうございます。 自分が全く出来ないもので、情けない限りです。 分かり難い説明なのにきちんと対応して頂き、なんと言って良いか分かりません。 心からお礼申し上げます。 頑張って格闘してみます。
もちつもたれつです… 諸大先生方のようにきれいなコードもスマートなコードも書けなくて申し訳ないです。 お題をいただけると自分自身の励みになりますので。
ただ、わからないところは勝手に埋めました。 セルの色がついたときはフォントの色を自動色にする等。
予定と違う動作だった場合また教えてください。 (通りすがり)
んー不具合でてると思うんだけど…。 たぶんコピーペーストができないと思うので、もしかしたら Private Sub Worksheet_Activate() の方が使いやすいのかも…。
(通りすがり)
Ontimeを使わずに再計算イベントを起こすには、クエリを利用してはいかがでしょう。 ダミーのデータベースクエリ(データベースとしてそのブック自体でも良い)を設定し、 データ範囲プロパティで?分ごとに自動更新、とし、クエリのデータ範囲を参照する 単純な参照式などを適当なセルに入力しておきます。 データベースクエリの自動更新によって、再計算イベントが生成されます。 マクロ自体もCalculateイベントが利用できます。 この場合はユーザーの操作の種類を問わなくて良いという意味でお勧めです。 (みやほりん)(-_∂)b
ここ見ながらちょっとやってみました。
(7)で、そのまま「エクセルのデータを返す」にチェックして、 (8)〜(15)まですっとばします。 (16)で新しいシートを選択してダミーとします。 プロパティの「定期的に更新する」にチェックを入れて好きな時間を入れておけばバックグラウンド でも勝手に処理してくれますね!
(17)以降も無視してよさそうです。
さすれば条件付き書式で対応可能なので、私のマクロは無視してください。
(通りすがり)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.