【问题标题】:Filter spreadsheet by exact date (MM/DD/YYYY)按确切日期 (MM/DD/YYYY) 过滤电子表格
【发布时间】:2018-04-18 20:10:43
【问题描述】:

我正在构建一个从用户表单收集数据的工具,然后最终用户应该能够过滤所有数据的主集并将其复制到电子邮件中。出于某种原因,我的过滤器没有将集合细化到确切的日期,而是只细化到月份。日期存储在用户表单文本框中,该文本框会自动填充当前日期,但如果用户选择报告旧数据,则可以更改它。这是我的过滤器代码;

    Private Sub CommandButton6_Click()


Sheets("Master").ListObjects("Append1").Range.AutoFilter Field:=1, Operator:= _
        xlFilterValues, Criteria2:=Array(1, date2_txtb)

End Sub

date2_txtb = 包含日期的文本框 附录 1:构成“主集”的修正查询

更新:

Private Sub UserForm_Initialize()
date2_txtb.Text = Format(Now(), "MM/DD/YYYY")
End Sub

【问题讨论】:

  • 每次我在 Excel 中看到有关时间或日期的问题时,我都不得不问同样的问题:这些是实际日期还是看起来像日期?您可能需要通读此内容以更好地了解 Excel 中的日期/时间:stackoverflow.com/a/37101358/1153513 这可能也是一个不错的阅读内容:stackoverflow.com/a/38001028/1153513 之后,请更新您的问题并发布并与我们分享您是否验证了这些是否是 所有实际日期。此外,请在您的代码中加入检查以确保 date2_txtb 是一个实际日期。
  • 感谢您发布这些链接,我真的很好奇 excel 如何将日期格式化为数字,反之亦然。我更新了我的问题,希望能对此有所了解。我确实将 date2_txtb 格式化为日期(我认为),但是为了能够成功过滤我的所有数据,您有什么建议?

标签: vba excel


【解决方案1】:

我想这就是你想要的。

date2_txtb = "11/11/2017"

Dim vDate As Date

Dim lDate As Long

vDate = DateSerial(Year(date2_txtb), Month(date2_txtb), Day(date2_txtb))

lDate = vDate

ThisWorkbook.Sheets("Master").ListObjects("Append1").Range.AutoFilter Field:=1, Criteria1:=">=" & lDate, Operator:=xlAnd, Criteria2:="<" & lDate + 1

【讨论】:

    猜你喜欢
    • 2015-06-11
    • 2014-05-05
    • 1970-01-01
    • 2021-11-25
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多