我想在我的宏中将文本到列的范围设为动态的。但如果我尝试将 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.TextToColumns
但myRange.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