[[20190611184945]] 『エクセルを開いた時に、本日の日付に色』(ぽんず) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルを開いた時に、本日の日付に色』(ぽんず)

シート1のD列に日付が入っていきます。
途中空白もあります。データが入っているのはD3セルからです。

2019/6/13
2019/6/20

2019/6/11

2019/6/21
2019/6/11

ワークシートを開いた時に今日の日付以降(期限切れ)の背景色を赤にしたいです。
関数や条件付き書式ではなくVBAで行いたいのですがお力を貸していただけますでしょうか。初心者です。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


回答が得られるまでのつなぎで、

>条件付き書式ではなく

よろしければ、その理由を教えていただけますか。

(マナ) 2019/06/11(火) 19:20


失礼しました。
D列以外の列にも日付を入力する項目が20ヶ所あり、そこには別の条件が入っています。今D列には本日の日付に色付けする条件付き書式が入っているのですが、操作者が複数おり、意図しない箇所に条件がコピペされているようです。VBAであればコピペで書式が乱れたりしないのではないかという思いがあり、書かせていただきました。コピペや挿入など、他の列に影響がない形で誰が操作しても同じ結果になる方法があれば、VBAにはこだわりません。
(ぽんず) 2019/06/11(火) 20:02

すみません、一部間違えました。
「誤」今日の日付以降(期限切れ)の背景色を赤
「正」今日の日付以前(期限切れ)の背景色を赤
前後を間違えました。
期限が今日なら、今日より前の日付も期限切れなので赤にしたいのです。
(ぽんず) 2019/06/11(火) 22:42

回答つきませんね。

>操作者が複数おり、意図しない箇所に条件がコピペされているようです。

では、こんなマクロにしてはどうでしょうか。

1)対象シートの条件付き書式をクリア
2)D列に、条件付き書式設定

これを、Workbook_openに記述し、起動時に実行させる

コードがわからなければ、「マクロの記録」を利用するとよいです。

(マナ) 2019/06/12(水) 19:30


条件付き書式を使いました

1 D列
2 2019/5/30
3 2019/5/27
4 2019/6/11
5
6 2019/6/24
7 2019/6/12
8
9 2019/6/18

数式が
=$D3-1<=TODAY()

このように指定したところ、D列のすべての空白セルに色がついてしまい、
5/27のみがなぜか無色になってしまいました。
(ぽんず) 2019/06/12(水) 22:48


その後なんとか、フィルタの日付→本日でできたのですが、
Workbook_openで「ファイルが存在しません」と出てしまいました。
(ぽんず) 2019/06/12(水) 23:49

「マクロの記録」の結果を教えていただけますか

(マナ) 2019/06/13(木) 18:32


ググりながらなんとか出来た気がします。
途中、データの変更があり、フィルタW6行目になりました。

Private Sub Workbook_Open()

ActiveWindow.ScrollRow = 1

Range("A6").AutoFilter 23, xlFilterToday, xlFilterDynamic

Range("W7", Cells(Rows.Count, 23).End(xlUp)).Select
Selection.Interior.ColorIndex = 18
Range("W7").AutoFilter Field:=7

If (ActiveSheet.AutoFilterMode = False) Then
 Exit Sub
End If
ActiveSheet.Range("W7").AutoFilter

If (ActiveSheet.AutoFilterMode = True) Then
 Exit Sub
End If
Range("A6:Z6").AutoFilter

Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select

End Sub
(ぽんず) 2019/06/13(木) 22:18


考えていたのは、こんな感じのことです。
 Private Sub Workbook_Open()
    Dim ws As Worksheet

    Set ws = Sheet1

    ws.Cells.FormatConditions.Delete
    With ws.Columns("W")
        .FormatConditions.Add Type:=xlExpression, Formula1:="=AND(rc<>"""",rc<=TODAY())"
        .FormatConditions(1).Interior.ColorIndex = 18
    End With

 End Sub

(マナ) 2019/06/14(金) 22:12


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.