【问题标题】:Convert XX to 20XX text date in VBA在VBA中将XX转换为20XX文本日期
【发布时间】:2016-10-04 11:50:03
【问题描述】:

我有这种格式的单元格: 2012 年 2 月 1 日 我将单元格格式化为日期 xx/xx/xxxx,如下所示:

Columns("A:A").Select
Selection.Replace What:="-", Replacement:="/", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
Selection.NumberFormat = "m/d/yyyy"

但是当我执行它时,Excel 会显示一个警告:“带有 2 位数年份的文本日期”并显示一些选项,我想要一个显示“在 VBA 中将 XX 转换为 20XX 文本日期”的选项。发生这种情况是因为年份是 12 并且它询问是 1912 还是 2012。 我希望我的 vba 宏说“现在是 2012 年”。

某种方式??如果我手动执行相同的“替换”(不在 vba 上),2012 会自动更新,但我需要自动更新。

谢谢。

编辑:

终于解决了:

 'Pasa los años XX a 20XX
Private Sub FormatAny()
Dim i As Integer
i = 1
For Each celda In Range(Range("A1"), Cells(ActiveSheet.Rows.Count, 1))
    If Len(celda.Text) > 4 Then
        Dim divTexto: divTexto = Split(celda.Text, "/")
        If UBound(divTexto) - LBound(divTexto) = 2 Then
            If Len(divTexto(UBound(divTexto))) = 2 Then
                divTexto(UBound(divTexto)) = "20" & divTexto(UBound(divTexto))
                celda = Join(divTexto, "/")
                Range("A" & i).Select
                ActiveCell.FormulaR1C1 = celda
            End If
        End If
    End If
i = i + 1
If (i = 32676) Then
    Exit For
End If
Next
End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:
    for each c in range(range("A1"), cells(activesheet.rows.count,1))
    dim s$:s=c.text
    if len(s)>4 then
    
    dim a : a=split(s,"/")
    if ubound(a)-lbound(a) = 2 then 
    if len(a(ubound(a)))=2 then 
    a(a(ubound(a)))="20" & a(a(ubound(a)))
    c=join(a,"/")
    ' or !     c=cdate(join(a,"/"))
    end if
    end if
    end if
    next
    

    【讨论】:

    • 谢谢,但我没有看到“end ifs”和“dim a() : a=split(s,"/")” 行不起作用,编译器说这是因为变量类型
    • 是的,我想你可以添加它:) 我修改了代码
    • 太快了!谢谢!现在我在“If Len(a(2)) = 2 Then _ c = DateSerial(CLng("20" & a(2)), a(1), a(0))”中得到这个错误。错误说:运行时错误 9,索引超出间隔
    • 我猜你有一个不是日期的单元格。我更新了代码:D
    • 同样的错误,但这次是第二次迭代。日期范围从 A2 到 A... 字段包含: 1/ene/12 、 31/dic/12 等。我的问题代码在此之前执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多