macro en excel

Iniciado por tony82, 17 Diciembre 2008, 21:25 PM

0 Miembros y 1 Visitante están viendo este tema.

tony82

Buenas tardes, primero que todo muchas gracias a la persona que me pueda colaborar,
estoy realizando un macro, y necesito que cuando ingrese un dato en una celda, esta me la rellene de ceros, dejando como maximo 10 digitos.
ejemplo

el numero que se ingresa es 4567,
y que la macro lo convierta en 0000004567.

lo intente por la opcion en formato - celdas- en la pestana numero selecciono personalizada y le agrego los ceros, pero lo que pasa es que el numero no siempre es de cuatro digitos puede ser de un digito, pero se debe rellenar a la izquierda con cero.
tambien intente con una funcion de excel, pero lo que pasa es que la informacion es cambiante y se copia de otra hoja y se pega en la hoja uno, entoces no podria con formula la cual se borraria al pegar la informacion.
Muchas gracias

Tony

LeandroA

hola, mejor usa el formato que si se puede.  anda a formato de Celdas y seleciona Personalizada y luego en el cuadro de texto donde dice "Tipo" pones 0000000000

Saludos

Novlucker

Eso ocurre porque el formato de números no permite poner ceros a la izquiera, al fin y al cabo no sirven para nada  :xD

Formato > Texto  :P , en formato texto si funciona, no se necesitan macros  ;)

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

tony82

Cita de: LeandroA en 18 Diciembre 2008, 04:37 AM
hola, mejor usa el formato que si se puede.  anda a formato de Celdas y seleciona Personalizada y luego en el cuadro de texto donde dice "Tipo" pones 0000000000

Saludos


Si funciona pero si no fuera tan cambiantes los campos, aproximadamente cada 3 minutos se esta cambiando la informacion del texto, con una macro que ya incorpore,
ademas se incerta informacion anadiendo celdas nuevas, y al estar asi este formato se pierde se corre a la fila o columna siguiente. por tal razon es necesario una macro que cuente cuantos caracteres hay, y que inserte los caracteres faltantes con ceros.

tony82

Cita de: Novlucker en 19 Diciembre 2008, 19:26 PM
Eso ocurre porque el formato de números no permite poner ceros a la izquiera, al fin y al cabo no sirven para nada  :xD

Formato > Texto  :P , en formato texto si funciona, no se necesitan macros  ;)

Saludos

En este caso si me sirven los ceros ya que estos son los que me identifican una series de informacion como un codigo de barras.
la opcion de texto en columnas si me sirve pero la cantidad de columnas es grande, y lo que necesito es que cuando se ejecute el archivo no se deba hacer nada manual mente sino con una macro, te agradezco tu respuesta gracias

Novlucker

Te doy la base, funciona siempre y cuando al dar ENTER la selección se mueva hacía abajo  :P

Código (vb) [Seleccionar]
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Texto as String
Cells(ActiveCell.Row - 1, ActiveCell.Column).NumberFormat = "@"

Texto = Cells(ActiveCell.Row - 1, ActiveCell.Column).Value
If Texto <> "" Then

For i = 1 To (10 - Len(Texto))
    Texto = "0" & Texto
Next

Cells(ActiveCell.Row - 1, ActiveCell.Column).Value = Texto

End If
End Sub


Modificala según tu conveniencia, esa macro se agregaría en todo el libro, lo digo por si necesitas que sea en una sola página  ;)

También recuerda que hay que tener cuidado con las Macros, ya que al ejecutar una pierdes la posibilidad de deshacer  :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

tony82

Cita de: Novlucker en 26 Enero 2009, 18:23 PM
Te doy la base, funciona siempre y cuando al dar ENTER la selección se mueva hacía abajo  :P

Código (vb) [Seleccionar]
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Texto as String
Cells(ActiveCell.Row - 1, ActiveCell.Column).NumberFormat = "@"

Texto = Cells(ActiveCell.Row - 1, ActiveCell.Column).Value
If Texto <> "" Then

For i = 1 To (10 - Len(Texto))
    Texto = "0" & Texto
Next

Cells(ActiveCell.Row - 1, ActiveCell.Column).Value = Texto

End If
End Sub


Modificala según tu conveniencia, esa macro se agregaría en todo el libro, lo digo por si necesitas que sea en una sola página  ;)

También recuerda que hay que tener cuidado con las Macros, ya que al ejecutar una pierdes la posibilidad de deshacer  :P

Saludos



Novlucker
Gracias eso es exactamente lo que necesitaba
gracias
Saludos

Novlucker

Muy bien entonces, sino como opción puedes crear un botón para validar los datos, entonces no te fijas si se da enter o se presiona otro botón, recorres toda la planilla y ya, no lleva nada  :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein