使文本列范围动态化

使文本列范围动态化

我想在我的宏中将文本到列的范围设为动态的。但如果我尝试将 myRange 放入其中,它不起作用。我在网上找不到任何关于将文本到列设为动态的信息。

原文(记录代码):

Sub Macro3()
    Selection.TextToColumns Destination:=Selection, DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), DecimalSeparator:=".", ThousandsSeparator:=",", _
    TrailingMinusNumbers:=True
End sub

编辑后(但无法使其工作):

Sub Macro3()

    Dim myRange As Range
    Set myRange = Selection

    Selection.TextToColumns Destination:=myRange, DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), DecimalSeparator:=".", ThousandsSeparator:=",", _
    TrailingMinusNumbers:=True

End Sub

我认为会有一个简单的解决方案,但我搜索过却找不到任何解决方案。

有人能帮忙解决这个问题吗?

答案1

您没有指定分隔符,因此即使您的第一段代码也会失败。我已将逗号选项设置为 true 以使代码运行。您可能需要使用其他分隔符。

您可以为 MyRange 分配任何范围,只要它适合文本到列操作,即只有一列和适合您设置的模式的数据,即每行只有两个元素。然后不要使用Selection.TextToColumnsmyRange.TextToColumns

Sub Macro4()
Dim myRange As Range
Set myRange = Range("A1:A20") ' you may need to qualify the range with sheet name, etc.

    myRange.TextToColumns Destination:=myRange, DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), DecimalSeparator:=".", ThousandsSeparator:=",", _
    TrailingMinusNumbers:=True
End Sub

答案2

谢谢你,Teylyn,

我终于明白了。我需要将selection.textocolumns更改为myRange.TexttoColumns。

我没有改变逗号,因为它只是为了将数据格式从美国更改为欧盟。

我的最终代码是这样的: Sub Macro3()

    Dim myRange As Range
    Set myRange = Selection

    myRange.TextToColumns Destination:=myRange, DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), DecimalSeparator:=".", ThousandsSeparator:=",", _
    TrailingMinusNumbers:=True

End Sub

相关内容