• ベストアンサー

Accessで経過日付に応じて色をつけたい

Accessで各社員に業務改善案を入力してもらうDBを作成しています。登録時に日付を自動取得するようになっています。定期的に改善案を出してもらいたいので、前回登録日からの経過日数に応じて段階的に色を変えて(2週間経過はは青色・1ヶ月経過は黄色・2ヶ月以上経過は赤色など)、各々前回の入力からどのくらい経っているかわかるようにしたいのですが、可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#27115
noname#27115
回答No.9

この手法、知りませんでした。返って、助けてもらいました。 ところで、 >"d"ではなく"m"の月指定でないと上手くいかなかったのが良く分かりませんが、 うちの場合、"d"でOKで4色表示ができました。フィールド名はうちが使っているそのままですが・・・・ DateDiff("d",[日付],Date())>=1 And DateDiff("d",[日付],Date())<14 DateDiff("d",[日付],Date())>=15 And DateDiff("d",[日付],Date())<30 DateDiff("d",[日付],Date())>=31 And DateDiff("d",[日付],Date())<60

221EG6
質問者

お礼

上記を参考に"d"で入れ直しましたら、4色表示上手くいきました。どこか1文字間違えていたのかもしれません。この度は色々とご相談に乗って頂きましてありがとうございました。

その他の回答 (8)

noname#7099
noname#7099
回答No.8

NO2の方法でやってください。 今試されている方法は、表形式には向きません。

221EG6
質問者

お礼

ご相談に乗って頂きましてありがとうございました。No2の方法もまた試してみます。

noname#27115
noname#27115
回答No.7

>Excelと同じような「条件付書式」の項目を発見し 具体的に書いてもらえたりするとこちらも参考になるのですが。。。 それと、#6さんのご指摘のように、レコード移動時(Form_Current)?にも同じコードを書いている方がいいかもしれません。 普段、Form_Currentが発生しない設計をしているもので、気づきませんでした。

221EG6
質問者

補足

以下の方法が参考になれば嬉しいです。書式メニューから条件付書式という項目を選び、条件式の所に「DateDiff("m",[Getdate],Date())>=1 And DateDiff("m",[Getdate],Date())<2」の様に入れて条件に合致する場合の色を指定しました。条件は3つまで作成できる様でいずれにも合致しない場合も含めると4通りの色分けができます。DateDiff関数の所でなぜか、"d"ではなく"m"の月指定でないと上手くいかなかったのが良く分かりませんが、条件付書式を使用するとExcelレベルの私の知識でもできました。

noname#7099
noname#7099
回答No.6

 Form_OpenやAfterUpdateのイベントが発生した時点に書き込んだら、レコードが移動しても動作しませんので、一番最初のレコードの色指定のままとなりませんか?(単票フォームで1件ずつフォームを開け閉めするなら構わないと思います。)  動作確認していませんが、「レコード移動時」(だったっけ?)あたりに記述してはいかがでしょうか?

221EG6
質問者

補足

「レコード移動時」の欄がありましたので、記述してみたのですが、反映されないようです。1件ずつレコードを開け閉めするタイプではなく、表形式で作成していますので、プロシージャでは難しいようです。引き続きのアドバイスありがとうございます。

noname#27115
noname#27115
回答No.5

> Private Sub 取得日_AfterUpdate() でなくて Private Sub GetDate_AfterUpdate() ですよね? どのコントロールでイベントを発生させるかも、状況がわからないのでズバリとは言えないかもしれませんが。。。

221EG6
質問者

お礼

イベントプロシージャにももっと強くなりたいので、引き続き色々試してみたいと思います。アドバイスありがとうございました。

221EG6
質問者

補足

色々と試してみたのですが、なぜか色がつきません。。上手くイベントの選択ができていないのではないかと。。今回はAccessのメニューを開いている際に、Excelと同じような「条件付書式」の項目を発見し、その欄にdatediff関数で入力してみた所、何とか色がつけられました。

noname#27115
noname#27115
回答No.4

構文はそれでいいと思いますよ。 どのイベントに貼るかは具体的な運用方法がわからないので何とも言えません。ご自身でこれだと思われたところに貼られていいと思います。 テーブルと連動しているのならForm_Openでもいいかもしれません。 ただ、値を手動で直す場合があるのなら Private Sub 取得日_AfterUpdate() If IsDate(Me![GetDate]) Then Select Case DateDiff("d", Me![GetDate], Date) Case 0 To 14 Me!GetDate.BorderColor = lngRed '色づけ処理 Case 15 To 30 Me!GetDate.BorderColor = lngYellow '色づけ処理 Case 31 To 60 Me!GetDate.BorderColor = lngBlue '色づけ処理 End Select End If End Sub のように、入力値が日付として正当なものかチェック入れるのもいいかと思います。

noname#27115
noname#27115
回答No.3

' #1 です。 ' 間違っていました。 ' Case の条件には間隔を持たせてください。 ' 条件設定には#2さんの方法とか他にもいろいろあると思います。 ' それぞれがそれらの一つです。 Select Case Datediff("d",Me![登録日],Me![前回登録日]) Case 0 to 14 '色づけ処理 Case 15 to 30 '色づけ処理 Case 31 to 60 '色づけ処理 End Select

221EG6
質問者

補足

フォームで、色を変えたい「日付」のテキストボックスのプロパティ→イベントのタブで、どの欄に、教えて頂いたイベントプロシージャをセットして良いのかわかりませんでした。セットする構文は、 Private Sub 取得日_AfterUpdate() Select Case DateDiff("d", Me![Getdate], Date) Case 0 To 14 Me!Getdate.BorderColor = lngRed '色づけ処理 Case 15 To 30 Me!Getdate.BorderColor = lngYellow '色づけ処理 Case 31 To 60 Me!Getdate.BorderColor = lngBlue '色づけ処理 End Select End Sub とすれば良いのでしょうか?(本日から何日経過しているかで色を変える場合) 的外れな文になっているかもしれませんが、 アドバイス頂けますと有難いです。

noname#7099
noname#7099
回答No.2

入力枠とは別に表示用に同じテキストボックスを4つ同じ場所に作ります。 背景は透明にします。 同じ場所に4つ重ねて作って、条件に合う時に表示させれば、経過日数によって表示する色が変わって見えます。 1つめは前配色を「黒」にして、レコードソースには =iif(DateDiff("d", 前回登録日,date())<14,前回登録日,null) 2つめは前配色を「青」にして、レコードソースには =iif((DateDiff("d", 前回登録日,date())>=14) or (DateDiff("d", 前回登録日,date())<30),前回登録日,null) 3つめは前配色を「黄色」にして、レコードソースには =iif((DateDiff("d", 前回登録日,date())>=30) or (DateDiff("d", 前回登録日,date())<60),前回登録日,null) 4つめは前配色を「赤」にして、レコードソースには =iif(DateDiff("d", 前回登録日,date())>=60) ,前回登録日,null) にしてはどうでしょうか。 ACCESSのバージョンがわからないので、古いもの(ACCESS97、2000)でも動作する方法を例示しました。 ACCESS2002では、もっと簡単にできる指定方法があるかもしれません。

221EG6
質問者

お礼

回答ありがとうございます。Accessのバージョンが2000なもので、2002程には簡単にはできないかもしれませんね。「matubokkuri」さんに教えて頂いた方法でも試してみようと思います。まずは「oshiete_kun」さんの方法でできないか試行錯誤している所です。

noname#27115
noname#27115
回答No.1

おそらく、色を付けると言うことなので、フォーム上のことと想像します。クエリやテーブル上では不可です。 Select Case Datediff("d",Me![登録日],Me![前回登録日]) Case 14 Case 30 Case 60 End Select Datediff関数で経過日数を求め、その結果を14日、30日、60日・・・・と仕分けして、色を付けたいコントールの背景色でも決めてやればいいと思いますよ。 "d"は日にちを比較します。"m"、"y"にすれば月や年を比較します。

221EG6
質問者

お礼

早速の回答ありがとうございます。ずっと一人で悩んでいたので、アドバイス頂いて感謝感激です!!

関連するQ&A

  • エクセルにて

    A列には日付が入力してあります。(2001/7/17) その日付から3日間経過してもC列のその行に何も入力されなければ、 B列のそのセルを黄色に表示する。 更に7日間経過しても入力なければ赤に表示するようにしたいのですが!? C列に入力されればB列のそのセルは青色表示にしたいのですが!     A      B     C 1 2000/7/10   赤 2 2000/7/11   青   2001/7/16 2 2001/7/13   黄   

  • EXCELのマクロにより日付経過でセルに着色

    EXCEL2003を使用しています。 K・M・O・Q・S列に日付を入力していまして 入力日付から本日が1年以上経過しているセルに赤、 入力日付から本日があと1ヶ月以内で1年の場合は橙、 入力日付から本日があと2ヶ月で以内1年の場合は黄、 入力日付から本日があと3ヶ月で以内1年の場合は黄緑 と設定したいと思っております。 条件付書式だと3つまでしか設定ができず困っております。 どなたかご教授願えませんでしょうか? 宜しくお願い致します。

  • Excel 日付経過日数

    DATEDIFで日付の経過日数を表示させています。 例えば2021,5,4から2021,06,10の経過日数なら 1か月と6日と表示させることはできています。 これを 1か月と1日でも過ぎていたら 2か月と表示させるよにするにはどうすればよいでしょうか。。。 調べてもでてこないので、困っています。 ご回答よろしくお願いいたします。

  • エクセルで自動にセルの色を変えたい

    エクセルを使った表示について質問です。 セルの中にある締切の日付が記入されており、今日の日付からその締切までの日数が、たとえば10日以上であれば青、5日から10日の間であれば黄色、5日を切ったら赤というように、そのセルの色が自動で変わるようにしたいのですが、マクロを使う以外には方法はありませんでしょうか。

  • 日付に応じてセルの色を変更したい

    Excel2019を使っています。 特定のセルに日付を入力した際に、入力した日付の5日~1日前までは青で、当日は赤で、それ以降はグレーで。というように色が変わるようにしたいのです。やっている方がいたので、やり方を聞こうと思っていたのですが、連絡が取れなくなってしまったので聞けませんでした。 できれば該当のセルだけ色を変える方法と、行全体の色を変える方法を教えて頂けると助かります。 ちなみに前日、当日までは該当セルのみで、日付を過ぎたら行全体の色を変える みたいなこともできるのでしょうか。 どなたかご存じの方、教えてください。 よろしくお願いします。

  • 色を覚えられない

    2歳半になる娘がいます。2ヶ月ほど前から、色を認識するようになりました。赤、青、黄、緑の基本の色を何回教えても、覚えてくれません。 “これ、何色?”とたずねると、かならず“黄色”とまず言われます。“これ赤だよ。”と教えてあげて、もう一度聞いても、“黄色”と答えます。保育園では、信号機の色を教えてくれているようです。 好きなピンクとオレンジは、すぐに答えれます。 まとまりのない分で、申し訳ないのです。 しばらく、様子見たほうがいいのでしょうか?教えてください。

  • 日付に自動で色を付けたいのですが?

    A列に日付 B列に曜日を入れています。 B列の曜日は条件付き書式を使って土曜日は青・日曜日は赤で自動的に色が付くようにしています。 B列に自動的に色が付いた所にあるA列の日付も自動的に色が付く方法はないでしょうか? よろしくお願いします。

  • 色の名前

    色って、もうたくさんありますよね。 青、赤、黄、緑と。 で漫画とか読んでると今まで聞いたこともない色の名前があります。 例えば山吹色、栗色などです。 そこで質問です。 このような青、赤、黄、緑のような色以外の色の名前を教えてください。

  • エクセル条件付き書式(空白でない場合に色を付ける、偶数行・奇数行毎に色を変える)

    エクセルの条件付き書式の設定で、 (1)セルが空白でない場合に色を付ける、 (2)偶数行・奇数行毎に色を変える という2つのことを同時に行う方法があれば 教えていただけないでしょうか? (※空白セルは、色なしに設定) (1)=A1<>"" → 赤 (2)=MOD(ROW(),2)=0 → 青  =MOD(ROW(),2)=1 → 黄 上記の設定の場合、空白セルが青・黄になります。 入力すると赤に変わります。 こちらが行いたいことは、 【空白セルは「色なし」で、入力すると、 奇数行は黄色、偶数行は青になることです。】 例 ABC 1* ←A1は黄 2 * ←B2は青 3 A1とB2以外のセルは色なしとなるようにしたい。 ただし、入力した場合に色がつくようにしたい。 よろしくお願いします。

  • 三原色について

    光の三原色は赤・緑・青だそうですが、 色の三原色はマゼンタ・シアン・黄色だそうです。 しかし私は色の(絵の具の)三原色を 赤・青・黄色と覚えていました。 なぜ間違って覚えたのかよくわかりません。 気になって困りますのでよろしくお教えください。

専門家に質問してみよう