Voltando à ativa.... "Transpor" valores de célula para uma coluna

Boa noite,
Esta dúvida foi postada no fórum do Julio Battisti:
"Tenho da célula A2 o seguinte conteúdo: '119346 / 119347 / 119348 / 119349 / 119350 / 119351 / 119352 / 119353 / 119354 / 119355 / 119356' .
Como posso transferí-lo para as células de uma coluna?"

Eis a solução apresentada:


Sub TransporCélulaparaVertical()

Dim rgOrigem    As Range
Dim rgDestino   As Range
Dim n           As Variant
Dim i           As Integer

Set rgOrigem = Application.InputBox(Prompt:="Informe a célula de origem", Type:=8)
Set rgDestino = Application.InputBox(Prompt:="Informe a célula de destino", Type:=8)

arrayNomes = Split(rgOrigem.Value, "/")

For i = LBound(arrayNomes) To UBound(arrayNomes)
rgDestino.Offset(i, 0) = arrayNomes(i)
Next i

End Sub


É interessante observar alguns dos elementos utilizados:

InputBox: este recurso permite interação do usuário com o código, inserindo valores ou referências que direcionam o fluxo de execução. No código acima, o InputBox foi utilizado para que sejam informadas: a célula que contém o texto a ser transferido e a célula da coluna a partir da qual será expandida.

Split: este comando permite que se "quebre" um string (cadeia de texto) a partir de um caractere de separação. Desta forma, cada um dos valores separados por "/" passa a constituir um elemento de um vetor.

LBoud e UBound: Quando não conhecemos o número de elementos de um vetor ou não queremos cometer erros em relação à seleção da base 0 ou 1 para numeração de seus elementos, podemos utilizar os dois comandos para garantir que um loop percorra todos os elementos do vetor.

[ ]s

2 comentários:

Anônimo disse...

Ótimo dica! No trabalho precisei disso várias vezes e agora ficou muito mais fácil.

Sérgio Silvino

Anônimo disse...

Muito boa essa dica meu caro! Parabéns!

Luigi

Pesquisar este blog

Carregando...

Arquivo do blog