Como crear una macro para autonumerar formulario en excel 2007

Quisiera generar un código que me permita generar un numero de serie en una celda y que al grabar el archivo borre las celdas de la plantilla y genere automáticamente un nuevo numero de serie

2 Respuestas

Respuesta
2

Si vas a guardar los datos en una hoja tipo resumen tendrás en alguna col la numeración.

Entonces en tu plantilla, en la celda donde quieras ver el nro consecutivo, colocá esta formula:

=MAX(Resumen!A:A)+1

Se asume aquí que la hoja se llama Resumen y los nros aparecen en la col A.

Elsa que tal y hay alguna macro que se pueda generar para aplicarlo directamente en la celda que estoy asignado como numero de pedido

Si, por ej:

RAnge("C3") = RAnge("C3") +1

La consulta se refiere a 'Como crear una macro para autonumerar formulario en excel 2007... así que está respondida. Esa es la instrucción de macro aunque se me hizo que para eso podías utilizar una fórmula si el libro no tiene ninguna otra macro.

Ahora, ¿cuándo la querés ejecutar?

- '¿Al grabar el archivo'...? ¿Tenés una macro para esto?

Podemos tomar el evento del botón Guardar y en este caso esta será la macro que debes colocarla en el objeto ThisWorkbook:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Hoja1").Range("C3") = Sheets("Hoja1").Range("C3") + 1
End Sub

Elsa buenos días

si tengo una macro para el botn guardar

que es la siguiente:

Sub guardar()

Range("bd5").Value = Date

carpeta = "d:\Desktop\pedidos\"

archivo = Range("ad9")

ActiveWorkbook.SaveAs Filename:=carpeta & "PEDIDO" & " " & archivo & " " & Format(Date, "DD.MM.YYYY") & ".xls", _

FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False

End Sub

Según esta macro donde deria colocar el código que me estas

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Sheets("Hoja1").Range("C3") = Sheets("Hoja1").Range("C3") + 1

End Sub

lo he puesto en thisworbook pero al ejecutarlo no me da el cambio de serie o es que estoy olvidando alguno comando de ejecución

saludos

No, en este caso no vá en el objeto ThisWorkbook sino en tu macro. Porque no lo necesitas cuando le des al botón Guardar de Excel sino a tu botón de guardar.

Esa línea (ajustando las referencias de hoja y celda) vá dentro de Sub guardar() pero antes de la línea del guardado (ActiveWorkbook.Save...). Por ej:

Sub guardar()

Sheets("Hoja1").Range("C3") = Sheets("Hoja1").Range("C3") + 1
Range("bd5").Value = Date
carpeta = "d:\Desktop\pedidos\"
archivo = Range("ad9")
ActiveWorkbook. SaveAs-------

Hola elsa disculpa no haberte respondido, eh probado integrando el código que me referistes pero no me funciona te envío mi código para que lo revises saludos

Sub guardar()

Sheets("Hoja1").Range("C3") = Sheets("Hoja1").Range("C3") + 1

Range("AX6").Value = Date

carpeta = "d:\Desktop\pedidos\"

archivo = Range("AD9")

ActiveWorkbook.SaveAs Filename:=carpeta & "PEDIDO" & " " & archivo & " " & Format(Date, "DD.MM.YYYY") & ".xls", _

FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

Tu rutina en la parte que a mí me toca, es decir incrementar un consecutivo antes de guardar está correcta y está resuelta.

Por supuesto que debes modificar el nombre de la hoja si en tu libro no es Hoja1 sino otra y debes cambiar la referencia de celda C3 si en tu libro es otra la celda.

El problema del guardado es otro y eso te respondí en tu otra consula.

Aquí noto que cambiaste la celda que tiene la fecha, antes era BD5 y ahora es AX6.

Puede pasar que la celda no tenga una fecha o que esté vacía. No estamos seguros y por lo tanto no puedo asegurar que te haya quedado un nombre válido, además de los separadores utilizados.

Lo ideal es que armes una cadena y así podrás observar cómo se vería el nombre y asegurarte que sea un nombre válido.

Por ejemplo:

carpeta = "d:\Desktop\pedidos\"
archivo = Range("AD9")

cadena = carpeta & "PEDIDO" & " " & archivo & " " & Format(Date, "dd-mm-yyyy")

Msgbox cadena 'ESTA LÍNEA TE MUESTRA CÓMO SE VERÁ EL NOMBRE DEL LIBRO (*)

On Error Resume Next 'ESTA LÍNEA IMPEDIRÁ QUE SALTE EL DEPURADOR ANTE UN ERROR DE GUARDADO (**)

ActiveWorkbook.SaveAs Filename:=cadena & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False

End Sub

(*) Essa línea usala solo para comprobar la 1ra vez, luego quitala.

(**) Si se presenta un error no se detiene la macro y el libro te habrá quedado abierto y sin guardar permitiéndote guardarlo manualmente.

Sdos y no dejes sin finalizar esta consulta que ya está resuelta.

Respuesta

Tengo un formulario de ingreso de datos y necesito un contador de registro automático que se refleje en un textbox, pero que a su vez se incremente cada vez que abro el Userform donde esta. Y al hacer click en el boton guardar registros me guarde los registros incluyendo el autonumero de ese nuevo registro...

Mi correo es [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas