La generazione di numeri unici per fogli di lavoro

A volte potrebbe essere necessario Excel per generare un numero unico per i fogli di lavoro. Ad esempio, si potrebbero utilizzare Excel per creare forme, come fatture, estratti conto, o fogli di monitoraggio, ed hai bisogno di numeri univoci per ogni modulo (che chiamerò questo un numero di biglietto). Questo, naturalmente, implica che Excel deve ricordare il numero da una sessione all'altra.

Ci sono un paio di modi per affrontare questo problema. Se i numeri non hanno bisogno di essere sequenziale, è possibile creare un numero di ticket in base all'ora corrente del giorno, in pochi secondi. La macro seguente può essere aggiunto all'oggetto ThisWorksheet:

Private Sub Workbook_NewSheet (ByVal Sh As Object)
Dim lTicket As Long
lTicket = CLng (Tempo * 24 * 60 * 60)
Sh.Range ("A1") = lTicket
End Sub

La macro viene attivato ogni volta che un nuovo foglio di lavoro viene aggiunto alla cartella di lavoro. Ci vuole il tempo corrente, lo converte in un numero intero di secondi, e poi inserisce tale valore nella cella A1. La probabilità di duplicare numeri di biglietto entro un dato giorno è remoto, ma potrebbe accadere nel tempo. (Per esempio, se si crea un ticket allo stesso tempo esatto oggi che avete fatto ieri o la scorsa settimana.)

Per ovviare a questo problema, è possibile creare un numero di ticket nel modo seguente:

Private Sub Workbook_NewSheet (ByVal Sh As Object)
Dim sTemp As String
sTemp = Format (data, "aammgg") e formato (Time, "hhmmss")
Sh.Range ("A1") = sTemp
End Sub

Questa versione del gestore di eventi costruisce un numero di ticket in base sia la data e l'ora. A meno che non si sta creando biglietti molto rapidamente, questo approccio dovrebbe ridurre la possibilità di numeri duplicati generati dalla macro.

Se i numeri devono essere sequenziale all'interno della cartella di lavoro corrente, allora si può definire un nome che contiene il valore corrente elevato del numero di biglietto, e poi una macro che mette quel numero in una cella di un nuovo foglio di lavoro e incrementa il valore della memorizzato numero. Seguire questa procedura per avviare:

  1. Scegliere Nome dal menu Inserisci, quindi scegliere Definisci. Excel visualizza la finestra di dialogo Definisci nome. (Vedi Figura 1.)

    La generazione di numeri unici per fogli di lavoro

    Figura 1. Finestra di dialogo Definisci nome.

  2. Nella casella Nome, immettere un nome come MAXNUM.
  3. In Riferito a zona nella parte inferiore della finestra di dialogo, digitare un segno di uguale seguito dal valore desiderato utilizzato per il numero del biglietto successivo.
  4. Fare clic su OK. Il nuovo nome è memorizzato nella cartella di lavoro.

Ora, aggiungere la seguente macro all'oggetto ThisWorksheet nell'editor di 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

Questa macro viene eseguito ogni volta che si inserisce un nuovo foglio di lavoro nella cartella di lavoro. Recupera il valore memorizzato nel MAXNUM, luoghi che valore nella cella A1 del nuovo foglio di lavoro, e quindi incrementa ciò che è memorizzato in MAXNUM.

ExcelTips è la vostra fonte per la formazione Microsoft Excel conveniente. Questo suggerimento (3336) si applica a Microsoft Excel 97, 2000, 2002, e 2003. È possibile trovare una versione di questo suggerimento per l'interfaccia ribbon di Excel (Excel 2007 e versioni successive) qui: generazione di numeri unici per fogli di lavoro.