You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除VBA用户窗体ListBox中含今日日期的项?

解决ListBox移除含今日日期项的问题

你遇到的问题核心是日期类型与格式化字符串不匹配,以及Now()包含时分秒导致的比较失败:

问题原因

  1. 初始化ListBox时,你用Format(fnd.Offset(t + 1, 0).Value, "dd-mmm-yyyy")把日期转成了字符串格式存储在第2列
  2. 而Now()返回的是带时分秒的日期时间类型,直接用=比较字符串和日期类型,或者和带时间的Now()比较,自然无法匹配

修正方案

有两种可靠的修正方式,选其一即可:

方式1:将ListBox的字符串转成日期,与当日日期(无时间)比较

For lngLoop = ListBox1.ListCount - 1 To 0 Step -1
    ' 把ListBox中的字符串转成日期类型,和Date(仅当日日期,无时间)比较
    If DateValue(ListBox1.List(lngLoop, 2)) = Date Then
        ListBox1.RemoveItem lngLoop
    End If
Next

方式2:将当日日期格式化为相同字符串格式,再比较

For lngLoop = ListBox1.ListCount - 1 To 0 Step -1
    ' 把当日日期格式化成和ListBox中一致的"dd-mmm-yyyy"字符串
    If ListBox1.List(lngLoop, 2) = Format(Date, "dd-mmm-yyyy") Then
        ListBox1.RemoveItem lngLoop
    End If
Next

补充说明

  • 尽量用Date而非Now()来获取当日日期,因为Now()包含当前时间(时分秒),而你的ListBox中只存储了日期部分
  • 注意RemoveItem后面的括号可以省略,写成ListBox1.RemoveItem lngLoop更规范

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:22:23