在Excel VBA中无法将完整的列号格式转换为日期“ dd.mm.yyyy”

时间:2018-07-24 09:09:05

标签: excel vba excel-vba

我想将G, H and I列的数字格式设置为短日期格式(dd.mm.yyyy)。我的代码:

sheet.Range("G1").End(xlDown).NumberFormat = "dd.mm.yyyy"
sheet.Range("H1").End(xlDown).NumberFormat = "dd.mm.yyyy"
sheet.Range("I1").End(xlDown).NumberFormat = "dd.mm.yyyy"

我认为woudl已经足够了,但是遗憾的是Excel并没有将所有单元格都转换为给定的格式。更有可能是随机的:

单元格G84(此列的最后一个单元格),H2,I2(这些列的第一个单元格)现在采用适当的格式,其余的仍然只是数字。我在上面做错了什么吗?

2 个答案:

答案 0 :(得分:1)

来自“宏记录器”:

Sub Macro1()
    Columns("G:I").NumberFormat = "m/d/yyyy"
End Sub

您会得到的:

enter image description here

如果您希望将列中的第一个单元格中的单元格移至空格之前的第一个单元格,则可以:

Sub Macro1()
    With Sheet1
        .Range(.Range("E1"), .Range("E1").End(xlDown)) = .NumberFormat = "m/d/yyyy"
    End With
End Sub

要获取从E1到E列中最后使用的单元格的范围:

Sub Macro1()
    With Sheet1
        MsgBox .Range(.Range("E1"), .Range("E" & .Rows.Count).End(xlUp)).Address
        .Range(.Range("E1"), .Range("E" & .Rows.Count).End(xlUp)).NumberFormat = "m/d/yyyy"
    End With
End Sub

答案 1 :(得分:1)

提供的SheetSheet Code Name,请像这样尝试...

Sheet.Range("G1", Range("G" & Rows.Count).End(xlUp)).NumberFormat = "dd.mm.yyyy"
Sheet.Range("H1", Range("H" & Rows.Count).End(xlUp)).NumberFormat = "dd.mm.yyyy"
Sheet.Range("I1", Range("I" & Rows.Count).End(xlUp)).NumberFormat = "dd.mm.yyyy"