VBA TextToColumns在手动完成和macros完成时的行为不同

我遇到了一个奇怪的问题,我根本无法理解。 我有一个包含4列date的.csv文件。 作为日常任务,我必须使用这些date,并使用Excel的TextToColumn选项将它们转换为DMY格式。 date的原始格式是MDY – 由于我不明白当手动使用数据>文本到列>固定宽度>date:MDY这些date转换为正确的DMY格式。

以下是.csv文件中原始数据的屏幕截图: 原始数据

现在我想通过一个简单的macros实现自动化,并且在将文本logging到列操作并进行一些调整以跨越所有4列之后,我得到了以下代码:

Sub Text_To_Column() ' ' Select_Column_Get_Length Macro ' Worksheets("Outcome extract").Activate Dim l As range Set l = range("A2", range("A2").End(xlDown)) Dim h As Long h = l.Count Dim daterange As range Dim firstcell As range Set firstcell = range("FG2") Set daterange = range(firstcell, firstcell.Offset(0, 3)) For Each n In daterange Dim dates As range Set dates = range(n, n.Offset(h, 0)) dates.Select Selection.TextToColumns Destination:=n, DataType:=xlFixedWidth, _ FieldInfo:=Array(0, 3) Next n End Sub 

该代码当前计数条目的数量,并执行文本列操作在这么多date(以不操作所有的细胞,我认为会减慢?)。 无论哪种方式,即使Text to Column的所有参数都是从录制文件中获取的,macros指令现在仍然给予了与手动操作不同的结果。

出于某种原因,最初alignment到右侧的条目在手动完成时交换了MM和DD,而不是由macros完成。

任何暗示我哪里出错,将不胜感激!

Ps我知道我应该避免select单元格和范围的工作,我会修复那一点,我知道这种方法的作品。