我有这种格式的单元格: 1 /二月/ 12 我将单元格格式化为日期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
答案 0 :(得分:0)
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