Consecutivo automático en vba

Tengo en excel (Visual Basic) un Commandbutton en el que deseo que ak darle clic me lleve automáticamente un numero consecutivo en un label.

El código que tengo para el commandbutton es:

Private Sub CommandButton3_Click()
Dim contador As Integer
contador = 10
contador = contador + 1
End Sub

Pero este código no me funciona correctamente; pues no me aumenta el consecutivo.

1 respuesta

Respuesta
2

Claro, porque al inicio le estás diciendo que el valor es 10, pero esto seguramente fue solo un ejemplo. Debes considerar de dónde toma Excel el primer valor de la variable 'contador': ¿Será de algún otro campo o de una celda?

Aclarame este aspecto para poder ajustar tu macro

Hola!

Mira acabo de cambiar el código lo realice mas simple:

Label3 = Label3 + 1

de esta manera me aumenta correctamente el consecutivo, pero, en el momento que cierro el UserForm y después lo abro de nuevo, no me trae el ultimo numero consecutivo, si no que me trae el primero que es 0001.

y no se que me hace falta en el código para que me guarde el ultimo consecutivo al momento de abrir nuevamente el UserForm.

Claro, pero Excel aún no sabe de dónde se toma el valor inicial. Porque al cerrar el formulario todas las variables se vacían.

Seguramente ese valor lo tenés en alguna celda del libro (sino hay que moverlo antes de cerrar el form).

Pero imaginemos un ejemplo ya que cuento con poca información:

Una hoja llamada FACTURA donde vas guardando datos del formulario, quizás lo imprimes también y luego el label o el control que sea se incrementa en 1... y nuevamente el proceso.

Entonces en la hoja FACTURA, en alguna celda quedó el último nro usado.

Al abrir el Userform, evento Initialize debés cargar el label con ese valor:

Private Sub UserForm_Initialize()
Label3.Caption = Sheets("FACTURA").Range("A5").Value + 1
End Sub

Seguramente ya tenés una macro o instrucción que incrementa este valor ... solo falta guardarlo al final.

PD) si x alguna razón no tenés guardado ese nro en ninguna celda, agregá esta rutina dentro del mismo form (ajustá nbre de hoja y celda):

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'antes de cerrar guardar el consecutivo
Sheets("FACTURA").Range("A5") = Val(Label3.Caption)
End Sub

¿Quedó claro?, sino x favor aclara todo lo que puedas, como verás solo estuve imaginando alguna situación posible...;(

Hola!

si con este código funciona correctamente.

pero mira tengo un inconveniente; si tengo creada una hoja llamada operarios, en la cual se guardan todos los consecutivos y los datos de cada uno de estos, pero, los datos se guardan hacia bajo, o sea:

A B

1 0001 JULIANA

2 0002 CAMILA

3 0003 NATHALIA

entonces en el momento que le doy clic en el botón "GUARDAR NUEVO OPERARIO" me lo agrega el la celda en limpio hacia abajo, si agrego el código: Label3.Caption = Sheets("OPERARIOS").Range("A1").Value + 1, no me va ha aumentar correctamente el consecutivo por que me va aumentar la celda A1 siempre o sea que siempre me va cargar el consecutivo numero 2. necesitaría que no me aumente la celda A1, si no que me aumente la ultima celda en esta hoja.

No se si soy clara con mi problema...

espero me colabores..

Gracias

En ese caso sería así:

Private Sub UserForm_Initialize()

'obtengo cuál es la última celda con datos en col A

ulti = Sheets("OPERARIOS").Range("A65536").End(xlup).Row

'al contenido de la última celda le sumo 1
Label3.Caption = Sheets("OPERARIOS").Range("A" & ulti).Value +1
End Sub

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas