前提・実現したいこと
現在作業に使用する機器の校正期日一覧のエクセルにマクロを実装するための作業をしています。
今のところ設定した日数の範囲に入ればセルの色が変わるまではできているのですが
校正期日の30日前、20日前、10日間から当日、期日超過と日数が変わるとセルの色が設定した色に変わるという機能を
実装したいのです、。
条件付きの書式の機能で同じことができることは理解していますがマクロで実現できないか悩んでいます。
解決策をご存じの方がいましたらお知恵をお貸しください。
発生している問題・エラーメッセージ
日数による段階的なセルの色の変更ができない。
該当のソースコード
ExcelVBA
1Option Explicit 2 3Sub Alert() 4 ' 設定シート 5 Dim settingSheet As Worksheet 6 Set settingSheet = Worksheets("設定") 7 8 ' 対象シート 9 Dim targetSheet As Worksheet 10 Set targetSheet = Worksheets(settingSheet.Cells(1, 2).Value) 11 12 ' 対象列 13 Dim targetColStr As String 14 targetColStr = settingSheet.Cells(2, 2).Value 15 16 ' 対象列の最終行を取得 17 Dim targetColLastRow As Long 18 targetColLastRow = targetSheet.Cells(Rows.Count, targetColStr).End(xlUp).Row 19 20 ' 今日の日付を取得 21 Dim today As Date 22 today = Date 23 24 'データ開始行を取得 25 Dim dataStartRow As Integer 26 dataStartRow = settingSheet.Cells(3, 2).Value 27 28 ' 対象列を全件チェック 29 Dim i As Integer ' 行数ループカウンタ 30 Dim v As Variant ' セルからの値受け取り変数 31 32 Dim alertCount As Integer ' 期限の過ぎている数 33 alertCount = 0 34 35 Dim checkCount As Integer ' チェック対象の数 36 checkCount = 0 37 38 Dim notDateCount As Integer ' 日付以外の数 39 notDateCount = 0 40 41 Dim targetCell As Range 42 For i = 0 To targetColLastRow - dataStartRow 43 44 Set targetCell = targetSheet.Columns(targetColStr).Rows(dataStartRow + i) 45 v = targetCell.Value 46 47 If IsDate(v) Then 48 checkCount = checkCount + 1 49 50 If v + settingSheet.Cells(4, 2).Value <= today Then 'settingSheet.Cellsの値は30で設定 51 alertCount = alertCount + 1 52 targetCell.Font.Color = RGB(255, 255, 255) 53 targetCell.Interior.Color = RGB(255, 0, 0) 54 Else 55 targetCell.Font.Color = RGB(0, 0, 0) 56 targetCell.Interior.Color = RGB(255, 255, 255) 57 End If 58 59 Else 60 notDateCount = notDateCount + 1 61 targetCell.Font.Color = RGB(0, 0, 0) 62 targetCell.Interior.Color = RGB(255, 255, 0) 63 End If 64 65 Next 66 67 68 If alertCount > 0 Then 69 MsgBox "期限チェック完了しました。1か月以内に有効期限の切れるものがあります。" 70 Else 71 MsgBox "期限チェック完了しました。1か月以内に有効有効期限切れの項目はありません。" 72 End If 73 74 75End Sub 76
補足情報(FW/ツールのバージョンなど)
Excel2016
回答2件
あなたの回答
tips
プレビュー