整栏为文字

时间:2017-09-26 15:15:50

标签: vba

我有一个excel文档,第一列格式化:

date
2017-08-01
2017-08-01
2017-08-01
2017-08-01
2017-08-01

我所做的是将整个列复制到文本文档并将其粘贴回工作表。 Tt自己修复了日期格式,完美地回来了:

DATE
01/08/2017
01/08/2017
01/08/2017
01/08/2017
01/08/2017

我已经尝试在excel(dd / mm / yyyy)中编写单元格并记录宏,没有任何作用,只有切割和粘贴到记事本上,现在我需要通过vba实现这一点,我尝试了正常:

     Range("a2:a5").Select
 Selection.NumberFormat = "@"

但它没有用,有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果日期存储为文本,您可以将它们乘以1(或加0)然后格式化。对范围的计算让Excel知道它正在处理数字。

代码取自Multiply Entire Range By Value?

Sub Test()

    Dim rData As Range

    Set rData = ThisWorkbook.Worksheets("Sheet1").Range("A2:A5")
    rData = Evaluate(rData.Address & "*1")
    rData.NumberFormat = "dd/mm/yyyy"

End Sub

答案 1 :(得分:0)

除了Evaluate转换文本到number的方法之外:

[a2:a6] = [--a2:a6]
[a2:a6].NumberFormat = "dd/mm/yyyy"

还有复制空白单元格并在Add对话框中选择Paste Special的Excel方法:

[b1].Copy                                           ' copy blank cell
[a2:a6].PasteSpecial , xlPasteSpecialOperationAdd   ' and add it to the destination range
[a2:a6].NumberFormat = "dd/mm/yyyy"