【发布时间】: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
【问题讨论】: