我知道“dd.mm.yyyy”在 Excel 中没有格式化为日期,而这个转换部分对我来说是什么。我在 .cell("C5") 中有“31.3.2019”,并希望它在同一个单元格中转换(替换它),并使用“2019 年 3 月 31 日”的新格式。我不断收到“超出范围”错误,我不确定我的错误在哪里。
以下是我尝试过的:
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") 的格式从 2019 年 3 月 31 日更改为 2019 年 3 月 31 日——它可以是连续的,但从“C5”开始,因为这是一个自动报告,并且位于指定的标题下方。我想我一直在看这个,整天编写脚本,无缘无故地失去理智。
最佳答案
要在列中获取真实日期,请尝试:
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
编辑#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
关于excel - 将 "dd.mm.yyyy"更改为 "mm/dd/yyyy"VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57046115/