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:
Ótimo dica! No trabalho precisei disso várias vezes e agora ficou muito mais fácil.
Sérgio Silvino
Muito boa essa dica meu caro! Parabéns!
Luigi
Postar um comentário