¿Código de macro que no elimine los ceros al inicio?

Tengo el siguiente código de macro:

Sub Recortar_a_6_digitos()
Dim Celda As Range
Dim NombreHoja
NombreHoja = "Hoja1"
Set Celda = Worksheets(NombreHoja).Range("H2")
While Not Celda.Value = ""
Celda.Value = Right(Celda.Value, 6)
Celda.Offset(0, 1).Value = CStr(Celda.Offset(0, -1).Value) & CStr(Celda.Value)
Set Celda = Celda.Offset(1, 0)
Wend
End Sub

Que ejecuta la sgte tarea:

Como se puede observar en la imagen en la columna I al final me borra los ceros al inicio, que estaban en la columna G. Necesito que al ejecutar la macro estos 0 no se borren.

Adjunto archivo en la nube:

https://www.dropbox.com/s/5aey319ysx49eqm/dianaexo%20%281%29.xlsm?dl=0 

Luego

2 Respuestas

Respuesta
2

No parece necesario el uso de VBA. Si las 3 columnas implicadas tuviesen formato de texto (botón derecho -> formato de celdas -> solapa 'número' -> texto) debería bastar con concatenar en la columna I las columnas G y H. Por ejemplo, para la fila 2, en I2:

=G2&H2

Saludos_

Respuesta
2

Si manualmente (en la columna G) pones una comilla simple antes del número, para que no te elimine los ceros a la izquierda, una solución trivial es añadir esa comilla a tu código, tal que así:

Sub Recortar_a_6_digitos()
Dim Celda As Range
Dim NombreHoja
NombreHoja = "Hoja1"
Set Celda = Worksheets(NombreHoja).Range("H2")
While Not Celda.Value = ""
Celda.Value = Right(Celda.Value, 6)
Celda.Offset(0, 1).Value = "'" & CStr(Celda.Offset(0, -1).Value) & CStr(Celda.Value)
Set Celda = Celda.Offset(1, 0)
Wend
End Sub

Con ese pequeño cambio ya te salen todas las celdas con todos los dígitos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas