Tornando o texto em colunas dinâmicas

0

Gostaria de tornar o texto para colunas de intervalo dinâmico na minha macro. Mas se eu tentar colocar o myRange lá, ele não funciona. Não consigo encontrar nenhuma informação na Web para tornar o texto em colunas dinâmico.

O original (código gravado):

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

Depois de editar (mas não consegue fazê-lo funcionar):

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

Acho que haveria uma solução fácil, mas procurei por ela e não encontrei nenhuma solução para descobrir isso.

Alguém pode ajudar com esse problema?

    
por Dubblej 11.07.2016 / 22:56

2 respostas

2

Você não especifica um delimitador, por isso mesmo seu primeiro bit de código falha. Eu configurei a opção de vírgula como true para que o código seja executado. Você pode querer usar um delimitador diferente.

Você pode atribuir qualquer intervalo a MyRange, desde que seja adequado para a operação de texto em colunas, ou seja, apenas uma coluna e dados adequados ao padrão que você configurou, ou seja, apenas dois elementos em cada linha. Então não use o usuário Selection.TextToColumns mas 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
    
por 12.07.2016 / 02:08
0

Obrigado Teylyn,

Eu finalmente descobri agora. Eu precisava alterar selection.textocolumns em myRange.TexttoColumns.

Eu não mudei a vírgula, porque foi apenas para alterar a formatação dos dados dos EUA para a UE.

Meu código final é este:     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
    
por 12.07.2016 / 08:55