Excel VBA TextToColumns在手动和宏执行时的行为不同

Excel VBA TextToColumns在手动和宏执行时的行为不同,excel,vba,Excel,Vba,我遇到了一个奇怪的问题,我简直无法动脑。我有一个.csv文件,其中包含4列日期。作为一项日常任务,我必须处理这些日期,并使用Excel的TextToColumn选项将其转换为DMY格式。日期的原始格式是MDY——由于我不理解手动使用数据>文本到列>固定宽度>日期时的原因:MDY这些日期被转换为正确的DMY格式 以下是.csv文件中原始数据的屏幕截图: 原始数据 现在,我想通过一个简单的宏将其自动化,在记录文本到列操作并对所有4列进行一些调整后,我得到了以下代码: Sub Text_To_Col

我遇到了一个奇怪的问题,我简直无法动脑。我有一个.csv文件,其中包含4列日期。作为一项日常任务,我必须处理这些日期,并使用Excel的TextToColumn选项将其转换为DMY格式。日期的原始格式是MDY——由于我不理解手动使用数据>文本到列>固定宽度>日期时的原因:MDY这些日期被转换为正确的DMY格式

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

原始数据

现在,我想通过一个简单的宏将其自动化,在记录文本到列操作并对所有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
代码当前统计条目数,并在那么多的日期执行文本到列的操作(至于不操作所有的单元格,我认为这会减慢速度?)。无论哪种方式,宏当前都会给手动操作带来不同的结果,即使Text to Column的所有参数都是从录制中获取的

由于某些原因,最初与右侧对齐的条目在手动(而不是通过宏)进行交换时,其MM和DD会进行交换

任何关于我哪里出错的提示都将不胜感激


另外,我知道我应该避免选择单元格并使用范围,一旦我知道该方法有效,我将修复该位。

FieldInfo:=数组(0,3)是基于1的,因此不能将0作为列指示符。您还必须为范围内的每一列设置此值。请看:你好Luuklag-谢谢你的评论。我已经阅读了文档,但不幸的是无法解决我的问题-你说它是基于1的是什么意思?据我所知,第一个元素指定了列中的起始字符位置(0是第一个字符)。再次感谢!基于1表示第一列是1,而不是0。FieldInfo:=数组(0,3)基于1,因此不能将0作为列指示符。您还必须为范围内的每一列设置此值。请看:你好Luuklag-谢谢你的评论。我已经阅读了文档,但不幸的是无法解决我的问题-你说它是基于1的是什么意思?据我所知,第一个元素指定了列中的起始字符位置(0是第一个字符)。再次感谢!基于1表示第一列是1,而不是0。