Manchmal benötigen Sie Excel, um eine eindeutige Nummer für Ihre Arbeitsblätter zu generieren. Sie können beispielsweise Excel verwenden, um Formulare wie http://www.formville.com/C2_free-invoice-forms.html[invoice‹s, Anweisungen oder Verfolgungsblätter zu erstellen, und Sie benötigen für jedes Formular eindeutige Nummern ( Ich werde dies eine Ticketnummer nennen. Dies bedeutet natürlich, dass Excel sich die Nummer von einer Sitzung zur nächsten merken muss.

Es gibt verschiedene Möglichkeiten, wie Sie dieses Problem angehen können. Wenn die Nummern nicht fortlaufend sein müssen, können Sie eine Ticketnummer basierend auf der aktuellen Tageszeit in Sekunden erstellen. Das folgende Makro kann dem ThisWorksheet-Objekt hinzugefügt werden:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

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

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

Das Makro wird jedes Mal ausgelöst, wenn der Arbeitsmappe ein neues Arbeitsblatt hinzugefügt wird. Es nimmt die aktuelle Zeit in Anspruch, konvertiert sie in eine ganzzahlige Anzahl von Sekunden und platziert diesen Wert dann in Zelle A1. Die Wahrscheinlichkeit, dass Ticketnummern innerhalb eines bestimmten Tages dupliziert werden, ist gering, kann jedoch im Laufe der Zeit auftreten. (Wenn Sie beispielsweise heute genau zur gleichen Zeit wie gestern oder letzte Woche ein Ticket erstellen.)

Um dieses Problem zu umgehen, können Sie eine Ticketnummer auf folgende Weise erstellen:

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

Diese Version des Ereignishandlers erstellt eine Ticketnummer, die sowohl auf Datum als auch auf Uhrzeit basiert. Sofern Sie keine Tickets sehr schnell erstellen, sollte dieser Ansatz die Möglichkeit von doppelten Zahlen verringern, die vom Makro generiert werden.

Wenn die Nummern in der aktuellen Arbeitsmappe fortlaufend sein müssen, können Sie einen Namen definieren, der den aktuell hohen Wert Ihrer Ticketnummer enthält, und dann ein Makro, das diese Nummer in einer Zelle in einem neuen Arbeitsblatt platziert und den Wert der gespeicherten erhöht Nummer. Führen Sie die folgenden Schritte aus, um zu beginnen:

  1. Wählen Sie im Menü Einfügen die Option Name und dann Definieren. Excel zeigt das Dialogfeld Name definieren an. (Siehe Abbildung 1.)

  2. Geben Sie im Feld Name einen Namen wie MaxNum ein.

  3. Geben Sie im Bereich Verweise auf unten im Dialogfeld ein Gleichheitszeichen gefolgt von dem Wert ein, den Sie für die nächste Ticketnummer verwenden möchten.

  4. Klicken Sie auf OK. Der neue Name wird in der Arbeitsmappe gespeichert.

Fügen Sie nun dem ThisWorksheet-Objekt im VBA-Editor das folgende Makro hinzu:

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

Dieses Makro wird jedes Mal ausgeführt, wenn Sie ein neues Arbeitsblatt in die Arbeitsmappe einfügen. Es ruft den Wert ab, den Sie in MaxNum gespeichert haben, platziert diesen Wert in Zelle A1 des neuen Arbeitsblatts und erhöht dann, was in MaxNum gespeichert ist.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (3336) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: