A veces, es posible que necesite Excel para generar un número único para sus hojas de trabajo. Por ejemplo, podría usar Excel para crear formularios como invoices, extractos u hojas de seguimiento, y necesita números únicos para cada formulario ( Llamaré a esto un número de boleto). Esto, por supuesto, implica que Excel necesita recordar el número de una sesión a la siguiente.

Hay un par de formas de abordar este problema. Si los números no necesitan ser secuenciales, puede crear un número de ticket basado en la hora actual del día, en segundos. La siguiente macro se puede agregar al objeto ThisWorksheet:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim lTicket As Long     lTicket = CLng(Time  24  60 * 60)

Sh.Range("A1") = lTicket End Sub

La macro se activa cada vez que se agrega una nueva hoja de trabajo al libro. Toma la hora actual, la convierte en un número entero de segundos y luego coloca ese valor en la celda A1. La probabilidad de duplicar números de ticket en un día determinado es remota, pero podría suceder con el tiempo. (Por ejemplo, si crea un ticket exactamente a la misma hora hoy que lo hizo ayer o la semana pasada).

Para solucionar este problema, puede crear un número de ticket de la siguiente manera:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim sTemp As String     sTemp = Format(Date, "yymmdd") & Format(Time, "hhmmss")

Sh.Range("A1") = sTemp End Sub

Esta versión del controlador de eventos crea un número de ticket basado tanto en la fecha como en la hora. A menos que esté creando tickets muy rápidamente, este enfoque debería reducir la posibilidad de números duplicados generados por la macro.

Si los números deben ser secuenciales dentro del libro de trabajo actual, entonces puede definir un nombre que contenga el valor alto actual de su número de ticket, y luego una macro que coloque ese número en una celda en una nueva hoja de trabajo e incremente el valor del valor almacenado. número. Siga estos pasos para comenzar:

  1. Elija Nombre en el menú Insertar, luego elija Definir. Excel muestra el cuadro de diálogo Definir nombre. (Ver figura 1)

  2. En el cuadro Nombre, ingrese un nombre como MaxNum.

  3. En el área Se refiere a en la parte inferior del cuadro de diálogo, ingrese un signo igual seguido del valor que desea usar para el siguiente número de boleto.

  4. Haga clic en Aceptar. El nuevo nombre se almacena en el libro de trabajo.

Ahora, agregue la siguiente macro al objeto ThisWorksheet en el Editor de VBA:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Dim iMax As Integer     iMax = Mid(ThisWorkbook.Names("MaxNum"), 2)

Sh.Range("A1") = iMax     iMax = iMax + 1     ThisWorkbook.Names("MaxNum").RefersTo = "=" & iMax End Sub

Esta macro se ejecuta cada vez que inserta una nueva hoja de trabajo en el libro. Recupera el valor que almacenó en MaxNum, coloca ese valor en la celda A1 de la nueva hoja de trabajo y luego incrementa lo que está almacenado en MaxNum.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (3336) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Generating_Unique_Numbers_for_Worksheets [Generación de números únicos para hojas de trabajo].