我知道“ dd.mm.yyyy”在Excel中未设置为日期格式,而此转换部分正是我要解决的问题。我在.cell(“ C5”)中包含“ 31.3.2019”,并希望它使用新格式“ 3/31/2019”在同一单元格内进行转换(替换)。我不断遇到“超出范围”错误,我不确定我的错误在哪里。
以下是我尝试过的内容:
Sub DivestitureTemplate_ChangeDateFormat()
Application.ScreenUpdating = False
Dim rng As Range
Dim str() As String
Set rng = Range("C5:C3000")
With Worksheets("Divestiture Template")
For Each rng In Selection
str = Split(rng.Value, ".")
rng.Value = DateSerial(2000 + str(4), str(2), str(0))
Next rng
Selection.NumberFormat = "mm/dd/yyyy"
Application.ScreenUpdating = True
End With
End Sub
将(“ C5:C3000”)的格式从31.3.2019更改为3/31/2019 -可以是连续的,但是从“ C5”开始,因为这是自动报告,并且位于指定的标题下方。我想我一直在研究这个脚本,整天编写脚本,无缘无故地对此感到头疼。
答案 0 :(得分:3)
要在该列中获取实际日期,请尝试:
Sub DivestitureTemplate_ChangeDateFormat()
Dim cell As Range, rng As Range, d As Date
Set rng = Worksheets("Divestiture Template").Range("C5:C3000")
For Each cell In rng
With cell
arr = Split(.Text, ".")
.Value = DateSerial(arr(2), arr(1), arr(0))
.NumberFormat = "m/dd/yyyy"
End With
Next cell
End Sub
EDIT#1:
Sub DivestitureTemplate_ChangeDateFormat()
Dim cell As Range, rng As Range, d As Date
Dim arr
Set rng = Worksheets("Divestiture Template").Range("C5:C3000")
For Each cell In rng
With cell
arr = Split(.Text, ".")
.Value = DateSerial(arr(2), arr(1), arr(0))
.NumberFormat = "m/dd/yyyy"
End With
Next cell
End Sub