当行数改变时划分数据(固定宽度)

时间:2017-01-26 19:41:33

标签: vba

我一直试图通过宏录制和讨论论坛将这些代码拼凑在一起,我似乎无法弄清楚我的问题是什么。

我绝不是一名Excel专业人士,但我已经浏览了很多网页,无法弄清楚如何解决这个问题。 我得到的当前错误是:

  

“未选择任何数据进行解析”。

双星号中的代码是调试器中突出显示的内容:

Sub Delimit_ImportARData()
 '
 'Delimit_ImportARData Macro
 '

 '
    Columns("E:E").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("D:D").Select
    Dim LastRow As Long
    LastRow = Cells(Rows.Count, "D").End(xlUp).Row
    **With Range("D1:D" & LastRow)
    .TextToColumns Destination:=Range("D2"), DataType:=xlFixedWidth, _
    FieldInfo:=Array(Array(0, 1), Array(14, 1), Array(26, 1)),
    TrailingMinusNumbers _:=True
    End With**
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "ALPHALOC"
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "BU"
    Range("F2").Select
    ActiveWorkbook.Save
    Range("A2").Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
    Selection.Copy
    Windows("Southwest AR  7Jan_20_17.xlsm").Activate
    Sheets("AR Southwest").Select
    ActiveWindow.SmallScroll Down:=-9
    Range("A2").Select
    ActiveSheet.Paste
    Range("V2").Select
End Sub

2 个答案:

答案 0 :(得分:0)

可能不是你的问题,但下面一行肯定需要注意......

    FieldInfo:=Array(Array(0, 1), Array(14, 1), Array(26, 1)),

应该是......

    FieldInfo:=Array(Array(0, 1), Array(14, 1), Array(26, 1)), _

答案 1 :(得分:0)

错误包含在''一句,改变这个:

**With Range("D1:D" & LastRow)
    .TextToColumns Destination:=Range("D2"), DataType:=xlFixedWidth, _
    FieldInfo:=Array(Array(0, 1), Array(14, 1), Array(26, 1)),
    TrailingMinusNumbers _:=True
    End With**

为此:

 With Range("D1:D" & LastRow)
     .TextToColumns Destination:=Range("D2"), dataType:=xlFixedWidth, _
     FieldInfo:=Array(Array(0, 1), Array(14, 1), Array(26, 1)), _
     TrailingMinusNumbers:=True
End With

当您尝试使用多行来放置" TextToColumns"方法的参数时,会生成错误。

请注意,在行的末尾" FieldInfo:= Array(Array(0,1),Array(14,1),Array(26,1)),"你必须写" _"在逗号后面,表示参数在下一行继续。太,在句子" TrailingMinusNumbers := True" ,标志" "仍然存在。

我希望这对你有所帮助。

温贝托