excel - 将 "dd.mm.yyyy"更改为 "mm/dd/yyyy"VBA

标签 excel vba

我知道“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/

相关文章:

excel - 如何计算字符串出现在单元格区域中的次数

asp.net - 使用 SendGrid 从 Azure 发送带有附件的电子邮件

vba - 使用 “”编译语句的错误结束

vba - 删除压缩文件

excel - 在 Excel 中显示一段时间的弹出窗口

VBA 群发邮件问题

Excel 宏,运行一次且永不重复,通过 XLAM 分发

php - 将html表格数据导出到excel文件

excel - 以编程方式将按钮添加到 WorkbookOpen 上的工作表

sql - 需要 vba-excel 和 Sql 查询帮助