AÑADIR CEROS A LA IZQUIERDA EN VBA

Hoy escribiré una entrada corta y sobre en una pregunta que me trasladaba la semana pasada un lector. Se trata de añadir ceros a la izquierda cuando necesitamos rellenar “x” posiciones en una base de datos.

Esto ya lo expliqué con fórmulas en la siguiente entrada: Añadir ceros a la izquierda, pero la consulta incidía en la necesidad de pasar la fórmula a código dado que la quería implementar en un proceso. Después de varios correos, finalmente me comentó que el dato sobre el que necesitaba añadir los ceros sería el número de documento de identidad (dni) y que estaba realizando pruebas.

Teniendo en cuenta esto, finalmente elaboré un pequeño programa que genera números de dni de forma aleatoria y luego le añade los ceros hasta completar 15 posiciones.

Sub GenerarDni()
Dim j As Double
'Limpiamos datos de hoja1 menos los encabezados
Worksheets(1).Range("A2:B65000") = Empty
'Contamos las celdas en blanco hasta el rango que nos interesa, "A31"
Fin = WorksheetFunction.CountBlank(Worksheets(1).Range("a2:A31"))
For j = 2 To Fin
'Generamos un número aleatorio entre 1 y 8 cifras
NUMERO = WorksheetFunction.RandBetween(1, 99999999)
'Generamos letras (mayúsculas) de forma aleatorio con la función carácter (Chr)
LETRA = Chr(WorksheetFunction.RandBetween(65, 90))
'Concatenamos el número y la letra
Sheets(1).Cells(j, 1) = NUMERO & LETRA
Next
End Sub

Con esta macro podremos generar fácilmente números aleatorios de DNI que nos resultarán muy útiles para realizar pruebas con nuestras bases de datos. A continuación debemos añadir los ceros a la izquierda, para ello tendremos que echar mano de la siguiente macro:

Sub CeroIzq()
Dim i As Double
With Sheets(1)
Final = Application.CountA(.Range("A:A"))
For i = 2 To Final
'aplicamos formato texto a las celdas seleccionadas
.Cells(i, 2).NumberFormat = "@"
'Con esta función añadimos tantos ceros como sean necesarios
'hasta completar una longitud de 15 posiciones
.Cells(i, 2) = WorksheetFunction.Rept("0", 15 - Len(.Cells(i, 1))) & .Cells(i, 1)
Next
End With
End Sub

La función es simple, repetimos el “0” 15 veces menos (-)  el largo actual del texto a rellenar, de forma que siempre controlaremos la longitud de los ceros en relación a los datos. Así queda la información, al pulsar el botón genera 30 dni y añade los ceros.

CEROS A LA IZQUIERDA EN VBA

Para no tener que ejecutar cada macro con un botón, podemos ejecutar las dos añadiendo en la primera macro una llamada a la segunda, llamando a la macro, literalmente: Call CeroIzq (os lo dejo así en el archivo).

Descarga el archivo de ejemplo pulsando en: CEROS A LA IZQUIERDA EN VBA

 

Anuncios

Un pensamiento en “AÑADIR CEROS A LA IZQUIERDA EN VBA

  1. Pingback: EXPORTAR ARCHIVOS TXT DE ANCHO FIJO DESDE EXCEL | Excel Signum

¿Te ha gustado?. Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s