Consecutivo con macro

Expertos, solicito su gran colaboración con el siguiente asunto
A través de un userform he logrado llenar una base de datos desde la columna B hacia la derecha. Pero no se como hacer para numerar automáticamente cada registro ingresado. En la columna A, fila 14 tengo el titulo Id, a partir de la celda A15 y hacia abajo debería poder autonumerar cada que se ingresen los datos del formulario.
Por otro lado y si no es mucho pedir, les agradecería la explicación de como a pesar de que los datos capturados en el rormulario sean en Mayúsculas y/o MinUCULAS, en la hoja se copien los datos con formato de nombre propio.

1 Respuesta

Respuesta
1
para numerar es sencillo pones el 1 en la primera y en la macro pones que ActiveCell.Value=ActiveCell.Offset(-1,0).Value + 1
y para cambiar mayusculas por minuscuals mirate el codigo aquí
http://www.fermu.com/es/articulos/office/89-excel/450
>Un saludo
>Julio
Parece fácil, pero si lo hiciera con la grabadora de macros me situaría en la celda b14, le diría ir a la ultima celda ocupada, hay si leer el valor de la celda, etc. pero la pregunta es como se hace desde un userform. Acuérdate, estoy empezando en este tema. Gracias por su tiempo.
Vamos a ver cuando rellenas tu formulario imagino que completas los TextBox y después habrás puesto un botón para que los datos se escriban en la hoja de Excel al hacer click en él.
Pues bien antes de empezar a escribir en la hoja debes de situarte donde comenzar a escribir lógicamente, pues comienzas por situarte en la 1ª celda que quieres escribir, en este caso A15
Range("A15").Select
'Ahora comprobamos que está vacía
If ActiveCell.Value="" Then
'Si está vacía le damos valor a 1 que sería el primer registro
ActiveCell.Value=1
'Y ahora comienzas a rellenar los datos hacia la derecha con los valores de tus TextBox
ActiveCell.Offset(0,1).Value=TestBox1...etc etc
'Pero si no está vacía bajamos hasta la que está vacía
Else
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1,0).Select
'Ahora damos el valor del registro sumando el anterior
ActiveCell.Value=ActiveCell.Offset(-1,0).Value + 1
'Y ahora ponemos los valores de los textBox
ActiveCell.Offset(0,1).Value=TexBox1
ActiveCell.Offset(0,2).Value=TextBox2.......etc etc
End If
Para cambiar las mayúsculas por minúsculas le añades el código que viene en la página que te dí.
Como tu escribes tus datos por filas la macro se tendrá que desplazar a la derecha hasta el final de tus datos, una vez pegados los datos del formulario a la hoja continuará así
Do While ActiveCell.Value<>""
Do While ActiveCell.Value<>""
Range("A15").Select
dato=ActiveCell.Value
If VarType(dato)=8 Then
ActiveCell.Value=UCase(dato)
End If
ActiveCell.Offset(0,1).Select
Loop
ActiveCell.Offset(1,0).Select
Es curiosa la cosa, te la explico, imagina que has comenzado a registrar datos en tu base en la Celda A15 hacia la derecha las celdas que sean "x" de igual, y ya estas en la fila A86. Esta macro tiene dos Do While Loop (ciclos) el primero va a desplazarse hacia abajo 1 fila hasta que se encuentre con la primera vacía (o sea el final de tus datos escritos) y la segunda en cada fila se desplazará hacia la derecha hasta que encuentre la primera celda vacía y en cada celda irá cambiando los valores de mayúsculas a minúsculas. Por lo tanto te corregirá toda la tabla.
Ya sabes que si quieres mayúsculas a minúsculas la instrucción es UCase y si es al contrario la instrucción la cambias por LCase.
Espero haberme explicado claramente, que con eso de que estas empezando nunca sé si he sido suficientemente claro.
>Un saludo
>Julio
PD. Si te ha servido puntúa y finaliza la consulta. Gracias. Si tienes algo más me lo dices.
Te agradezco la paciencia, la respuesta esta muy clara, si en la ejecución encuentro tropiezos te molesto. Gracias por compartir tus conocimientos.
Oscar AC

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas