Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: tony82 en 17 Diciembre 2008, 21:25 pm



Título: macro en excel
Publicado por: tony82 en 17 Diciembre 2008, 21:25 pm
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


Título: Re: macro en excel
Publicado por: 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


Título: Re: macro en excel
Publicado por: 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


Título: Re: macro en excel
Publicado por: tony82 en 26 Enero 2009, 17:50 pm
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.


Título: Re: macro en excel
Publicado por: tony82 en 26 Enero 2009, 17:53 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


Título: Re: macro en excel
Publicado por: 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
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  2. Dim Texto as String
  3. Cells(ActiveCell.Row - 1, ActiveCell.Column).NumberFormat = "@"
  4.  
  5. Texto = Cells(ActiveCell.Row - 1, ActiveCell.Column).Value
  6. If Texto <> "" Then
  7.  
  8. For i = 1 To (10 - Len(Texto))
  9.    Texto = "0" & Texto
  10. Next
  11.  
  12. Cells(ActiveCell.Row - 1, ActiveCell.Column).Value = Texto
  13.  
  14. End If
  15. 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


Título: Re: macro en excel
Publicado por: tony82 en 26 Enero 2009, 20:22 pm
Te doy la base, funciona siempre y cuando al dar ENTER la selección se mueva hacía abajo  :P

Código
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  2. Dim Texto as String
  3. Cells(ActiveCell.Row - 1, ActiveCell.Column).NumberFormat = "@"
  4.  
  5. Texto = Cells(ActiveCell.Row - 1, ActiveCell.Column).Value
  6. If Texto <> "" Then
  7.  
  8. For i = 1 To (10 - Len(Texto))
  9.    Texto = "0" & Texto
  10. Next
  11.  
  12. Cells(ActiveCell.Row - 1, ActiveCell.Column).Value = Texto
  13.  
  14. End If
  15. 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


Título: Re: macro en excel
Publicado por: Novlucker en 27 Enero 2009, 00:00 am
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