【问题标题】:how to select a date from a cell to be inputted into macro? or to put current date as a selection如何从要输入宏的单元格中选择日期?或将当前日期作为选择
【发布时间】:2021-07-04 21:54:35
【问题描述】:

所以我正在做一个宏来从工作表中提取数据,但是,我需要它是最新的,因为我需要每天更新工作表,目前我每月更新一次。有没有办法我可以将(今天)/当前日期输入到宏中,这样我就不必在宏中每隔 m 更改一次。

这是我用的。

Sheets("Form1").Select
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2                     'clear date
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=25                    'clear status
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=9                     'clear name
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=11                    'clear before improvement
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, Operator:= _
        xlFilterValues, Criteria2:=Array(1, "4/1/2021")                         'TBU, filter date(mar)

【问题讨论】:

  • Criteria:=Date 可以完成这项工作。作为替代尝试Criteria:= Format(Date, "m/d/yyyy") 或其变体。这取决于字段#2 包含的内容。无论哪种方式,Debug.Print Date 都会以您计算机的国际设置中设置的“短日期”格式打印当前日期。
  • 所以基本上,我需要按月计算数据,所以每个月底我都需要进入 marco 编辑第 mth 以便 vba 运行.. 所以而不是进入宏进行编辑,我可以从任何工作表或单元格中进行编辑,以便可以将其更新到我想要整理数据的月份吗?
  • 您可以使用 DateFormat(Date, "mm/ddyyyy") 代替 Sheet1.Cells(2, "A").ValueFormat(Worksheets("Sheet1").Cells(2, 1).Value, "mm/ddyyyy") 之类的引用。
  • 它不起作用..
  • 您的评论没有用。请描述你做了什么以及它的结果。提醒您一下,您的问题是“有没有一种方法可以将(今天)/当前日期输入到宏中”。我向您展示了方法。现在的问题是您如何实施我的建议。

标签: excel vba date


【解决方案1】:

也许这就是你想要的。它与您发布的代码相同,但从单元格 C1 中获取日期,而不是硬编码。

Dim RefDate     As Variant

With ActiveSheet
    RefDate = .Range("C1").Value
    ' leave C1 blank if you need today's date
    ' or keep a formula ike =TODAY() there
    If Not IsDate(RefDate) Or RefDate = "" Then RefDate = Date
    
    RefDate = DateSerial(Year(RefDate), Month(RefDate), 1)
    .ListObjects("Table1").Range.AutoFilter _
                 Field:=2, _
                 Operator:=xlFilterValues, _
                 Criteria2:=Array(1, Format(RefDate, "m/d/yyyy"))
End With

如果 C1 为空白或不包含日期,则代码将使用当前日期。 RefDate = DateSerial(Year(RefDate), Month(RefDate), 1) 行将日期(取自 C1 或当前日期)更改为它所指示的月份的第一个日期。因此,在 4 月的任何一天,应用于过滤器的日期将是 4 月 1 日,5 月将是 5 月 1 日,依此类推。因此,您可以将 C1 留空或保留当前日期,仅当您需要过滤器使用时才更改它另一个月的日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-08
    • 2016-04-29
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多