【问题标题】:How can I use function DATEVALUE in a code vba如何在代码 vba 中使用函数 DATEVALUE
【发布时间】:2015-02-10 05:37:14
【问题描述】:

如何在 VBA 代码中使用函数 DATEVALUE,以便将单元格从文本转换为 Date

例如。我有E1= "29/10/2014"

EXCEL 将其识别为文本。如果我双击单元格,它会将其反转为正确日期。

我想运行一个宏并将所有这些值转换为Date。我必须说我有一个 excel 表 Range A1:BJ10223 和日期列是 E、H、S、V、AB、AF、AJ、AL、AO、AS、AY、BE、BH。并非所有日期都反映为文本值。有些还可以。

【问题讨论】:

  • 研究我的朋友研究!试试谷歌!

标签: vba excel


【解决方案1】:

我所知道的将伪文本日期转换为实际日期值的最方便的方法是通过数据 ► 数据工具 ► 文本到列命令,该命令可以在 VBA 中循环。

Sub TXT2DMY()
    Dim v As Long, vCOLs As Variant
    vCOLs = Array("E", "H", "S", "V", "AB", "AF", "AJ", "AL", "AO", "AS", "AY", "BE", "BH")
    With ActiveSheet
        For v = LBound(vCOLs) To UBound(vCOLs)
            If CBool(Application.CountA(.Columns(vCOLs(v)))) Then _
                .Columns(vCOLs(v)).TextToColumns Destination:=.Columns(vCOLs(v)), _
                  DataType:=xlFixedWidth, FieldInfo:=Array(0, 4)
        Next v
    End With
End Sub

这种差异在较小的工作表上可能不明显,但任何超过 500 行的数据和这么多列肯定会更快。

【讨论】:

    【解决方案2】:

    VBA 中的等效函数是 CDate,它将其参数(正式为 Variant)转换为 Date 类型。

    【讨论】:

    • 我想知道为什么您(在所有人中)会在不让用户至少付出努力的情况下给出答案? :) BTW DATEVALUE 也可以在 VBA 中使用 :)
    • VBA 的文档非常糟糕。确实可以使用DATEVLAUE,但CDate在VBA中更自然,也可以在其他办公包中使用。
    • The documentation for VBA is notoriously poor. 真的吗?嗯,我不同意。你可能想看看这个link
    • 另一个 interesting read 因此缺乏对 OP 的研究!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    相关资源
    最近更新 更多