gpt4 book ai didi

excel - 具有多个 'past due' 项的 MsgBox

转载 作者:行者123 更新时间:2023-12-04 22:24:12 25 4
gpt4 key购买 nike

我正在 Excel 2016 中为制造项目构建 LOP(开放点列表)。每个行动项目都有一个完成的“目标日期”。我的意图是每次打开文档时,都会运行一个宏来扫描文档和每个过期的项目,将“目标日期”与今天的日期进行比较,将触发一个 MsgBox 弹出窗口,指出“有过期项目在以下行中:X、Y 和 Z。"我遇到了两个我试图解决的问题:

  • “目标日期”列 (J) 的单元格范围不会产生结果。如果我输入一个单元格,它将显示 MsgBox。例如,如果我只将范围设置为 J4,而 J4 已过期,则 MsgBox 将按预期显示。但是,如果我将范围设置为“J4:J999”,并且在 J 列中有多个过期条目并运行它,它什么也不做,甚至不会给我一个错误。
  • 我不知道如何将日期比较代码集成到多输出 MsgBox 代码中。也许一旦范围问题得到解决,它会有所帮助。

  • 下面是我用来识别 J 列中过期单元格并生成 MsgBox 的代码:
    Private Sub Workbook_Open()
    Dim cl As Range
    Set cl = ThisWorkbook.Sheets("OPEN ITEMS").Range("J4:J999")
    If IsDate(cl) Then
    If Now >= cl Then
    MsgBox "There are past due items in the following row(s):" & "" & cl.Address, vbExclamation, "ACTION REQUIRED"
    End If
    End If
    End Sub

    任何帮助将不胜感激。

    最佳答案

    试试这个代码:

    编辑:根据 BigBen 的评论,如果没有行满足条件,则添加控制。 (谢谢@BigBen)

    Private Sub Workbook_Open()
    Dim evalRange As Range
    Dim evalCell As Range
    Dim resultRows As String

    Set evalRange = ThisWorkbook.Sheets("OPEN ITEMS").Range("J4:J999")
    For Each evalCell In evalRange
    If IsDate(evalCell) Then
    If Now >= evalCell Then
    resultRows = resultRows & evalCell.Row & ","
    End If
    End If
    Next evalCell

    If resultRows <> vbNullString Then
    ' Remove last comma
    resultRows = Left$(resultRows, Len(resultRows) - 1)

    MsgBox "There are past due items in the following row(s):" & resultRows, vbExclamation, "ACTION REQUIRED"

    End If

    End Sub

    关于excel - 具有多个 'past due' 项的 MsgBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59565009/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com