Generera unika nummer för kalkylblad

September 23

Ibland kan du behöva Excel för att generera ett unikt nummer för dina kalkylblad. Till exempel kan du använda Excel för att skapa former såsom fakturor, kontoutdrag, eller spårnings ark, och du behöver unika nummer för varje formulär (jag ska kalla detta ett biljettnummer). Detta, naturligtvis, innebär att Excel måste komma ihåg numret från en session till nästa.

Det finns ett par olika sätt du kan närma detta problem. Om siffrorna inte behöver vara sekventiell, kan du skapa ett biljettnummer baserat på den aktuella tiden på dagen, i sekunder. Följande makro kan tillsättas till den ThisWorksheet objektet:

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

Makrot utlöses varje gång ett nytt kalkylblad läggs till i arbetsboken. Det tar den aktuella tiden, omvandlar den till ett helt antal sekunder, och sedan sätter det värdet i cell A1. Sannolikheten för att duplicera biljett nummer inom en viss dag är avlägsen, men det kan hända över tid. (Till exempel, om du skapar en biljett vid exakt samma tid i dag att du gjorde igår eller förra veckan.)

För att komma runt det här problemet, kan du skapa ett biljettnummer på följande sätt:

Private Sub Workbook_NewSheet (ByVal Sh As Object)
Dim Stemp As String
Stemp = Format (Date, "ååmmdd") och format (Tid, "ttmmss")
Sh.Range ("A1") = Stemp
End Sub

Denna version av händelsehanterare konstruerar ett biljettnummer baserat både datum och tid. Såvida du skapar biljetter mycket snabbt, bör detta tillvägagångssätt minska risken för dubbla siffror som genereras av makrot.

Om siffrorna måste vara sekventiell inom den aktuella arbetsboken, då kan du definiera ett namn som innehåller den nuvarande höga värdet på ditt biljettnummer, och sedan ett makro som placerar det numret i en cell på ett nytt kalkylblad och ökar värdet av det lagrade nummer. Följ dessa steg för att börja:

  1. Välj Namn menyn Infoga och välj sedan Definiera. Excel visar Definiera Namn dialogrutan. (Se figur 1.)

    Generera unika nummer för kalkylblad

    Figur 1. Definiera dialogrutan rutan Namn.

  2. I rutan Namn anger du ett namn som MaxNum.
  3. I Avser området längst ned i dialogrutan anger ett likhetstecken följt av det värde du vill använda för nästa biljettnummer.
  4. Klicka på OK. Det nya namnet är lagrat i arbetsboken.

Nu lägger du till följande makro till ThisWorksheet objektet i VBA Redaktör:

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

Detta makro körs varje gång du sätter ett nytt kalkylblad i arbetsboken. Det hämtar det värde du lagrat i MaxNum, platser som värdesätter i cell A1 i det nya kalkylbladet och sedan stegar vad som lagras i MaxNum.

ExcelTips är din källa för kostnadseffektiv Microsoft Excel utbildning. Detta tips (3336) gäller för Microsoft Excel 97, 2000, 2002, och 2003. Du kan hitta en version av detta tips för menyfliksområdet i Excel (Excel 2007 och senare) här: Generera unika nummer för kalkylblad.