Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

fortlaufende Nummer bei jedem öffnen der Tabelle..

Forumthread: fortlaufende Nummer bei jedem öffnen der Tabelle..

fortlaufende Nummer bei jedem öffnen der Tabelle..
01.04.2005 10:49:29
Anne
Hallo,
ich habe einen kleinen Denkfehler in meinem VBA-Code.
ich habe eine Tabelle mit 12 Tabellenblättern (1,2,...12) für jeden Monat eine. in der Spalte A Steht die fortlaufende Zahl, Spalte B das aktuelle Datum, Spalte C steht zur freien Verfügung. Bei jedem neuen öffnen der Datei wird automatisch eine neue fortlaufende Nummer vergeben und das aktuelle Datum. Ist ein Monat beendet, soll er die letzte fordlaufende Zahl +1 in das neue Tabellenblatt schreiben und dann nach jedem öffnen wie oben beschrieben fortfahren.
Ich nutzte Office 2002/Windows 200 SP4
Der aktuelle Fehler:
Ist eine Monat beendet, springt er zwar automatisch auf das neue Tabellenblatt, gibt jedoch einen Debuggfehler aus, weil ihm die Zahl fehlt.
Kann mir jemand helfen?
Hier der Code:

Private Sub Workbook_Open()
Dim i As Integer, b As Integer, c As Integer
Worksheets(CByte(Month(Date))).Activate
b = CByte(Month(Date)) - 1
If b = 0 Then b = 1
c = Range("A65536").End(xlUp).Row + 1
If c < 2 Then c = 2
i = Range("A" & Range("A65536").End(xlUp).Row)
If i = 0 Then i = Worksheets(b).Range("A" & Worksheets(b).Range("A65536").End(xlUp).Row).Value
Range("A" & c) = i + 1
Range("B" & c) = Date
End Sub

Danke schonmal
Gruß Anne
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: fortlaufende Nummer bei jedem öffnen der Tabelle..
01.04.2005 11:24:58
Anne
hi, hab nochmal an dem Code gearbeitet bzw umgestellt (nicht wirkich verändert...), bekomm nun Laufzeitfehler 13

Private Sub Workbook_Open()
Dim i As Integer, b As Integer, c As Integer
Worksheets(CByte(Month(Date))).Activate
b = CByte(Month(Date)) - 1
If b = 0 Then b = 1
c = Range("A65536").End(xlUp).Row + 1
If c < 2 Then c = 2
If i = 0 Then i = Worksheets(b).Range("A" & Worksheets(b).Range("A65536").End(xlUp).Row).Value
i = Range("A" & Range("A65536").End(xlUp).Row) <--- in dieser Zeile
Range("A" & c) = i + 1
Range("B" & c) = Date
End Sub


Anzeige
AW: fortlaufende Nummer bei jedem öffnen der Tabelle..
01.04.2005 13:04:55
u_
Hallo,
wenn du b als Integer deklarierst adererseits aber b in ein Byte umwandelst (b = CByte(Month(Date)) - 1), muss es ja knirschen.
versuche b = CInt(Month(Date)) - 1
Gruß
AW: fortlaufende Nummer bei jedem öffnen der Tabelle..
04.04.2005 07:53:59
Anne
Hallo,
leider funktioniert das auch nicht. Es zieht sich nun zwar die Nummer der vorherigen Seite und erhöht diese um eins aber er hat die erste Zeile, sprich den Wert Nummer inne, den er ja nicht überschreiben kann. wie fange ich es an, dass er das nächste Blatt doch wieder in der zweiten Zeile gebinnt? denn wenn ich die benannte Zeie vor die vor die if i=0 Zeile setzte, meckert er, weil i= 0 ist....
Anzeige
AW: fortlaufende Nummer bei jedem öffnen der Tabelle..
04.04.2005 08:44:12
Anne
Hallo,
hab den Fehler gefunden, danke!
;
Anzeige
Anzeige

Infobox / Tutorial

Fortlaufende Nummer in Excel bei jedem Öffnen der Tabelle


Schritt-für-Schritt-Anleitung

Um eine fortlaufende Nummer in einer Excel-Tabelle zu erstellen, die bei jedem Öffnen der Datei automatisch aktualisiert wird, befolge diese Schritte:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe oder öffne eine bestehende.

  2. Erstelle 12 Tabellenblätter (eines für jeden Monat) und benenne sie entsprechend (1, 2, ..., 12).

  3. Füge den folgenden VBA-Code in das Workbook_Open Ereignis ein:

    Private Sub Workbook_Open()
       Dim i As Integer, b As Integer, c As Integer
       Worksheets(CByte(Month(Date))).Activate
       b = CInt(Month(Date)) - 1
       If b = 0 Then b = 1
       c = Range("A65536").End(xlUp).Row + 1
       If c < 2 Then c = 2
       i = Range("A" & Range("A65536").End(xlUp).Row)
       If i = 0 Then i = Worksheets(b).Range("A" & Worksheets(b).Range("A65536").End(xlUp).Row).Value
       Range("A" & c) = i + 1
       Range("B" & c) = Date
    End Sub
  4. Speichere die Datei als Excel-Makro-fähige Arbeitsmappe (.xlsm).

  5. Schließe und öffne die Datei erneut, um zu testen, ob die fortlaufende Nummer und das aktuelle Datum korrekt eingefügt werden.


Häufige Fehler und Lösungen

  • Laufzeitfehler 13: Dieser Fehler tritt oft auf, wenn der Datentyp nicht übereinstimmt. Stelle sicher, dass b als Integer deklariert ist, bevor du es in CByte umwandelst. Ändere die Zeile zu:

    b = CInt(Month(Date)) - 1
  • Debuggfehler aufgrund fehlender Zahlen: Wenn du eine neue Nummer generieren möchtest, stelle sicher, dass du die richtige Zeile für die letzte fortlaufende Zahl ermittelst. Achte darauf, dass Range("A65536").End(xlUp).Row korrekt funktioniert, um die letzte Zeile zu finden.


Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du auch diese Formel in Excel verwenden:

  1. In Zelle A1 kannst du die Zahl 1 eingeben.

  2. In Zelle A2 schreibst du die Formel:

    =A1+1
  3. Ziehe die untere rechte Ecke von Zelle A2 nach unten, um die fortlaufende Nummer zu generieren.

Diese Methode ist jedoch statisch und aktualisiert sich nicht automatisch bei jedem Öffnen der Datei.


Praktische Beispiele

Ein typisches Szenario ist eine Excel-Tabelle für monatliche Ausgaben. Hier kannst du die fortlaufende Nummer für jeden Monat nutzen:

  • Tabellenblatt 1 (Januar):
    • A1: 1
    • B1: 01.01.2023
  • Tabellenblatt 2 (Februar):
    • A1: 2
    • B1: 01.02.2023

Diese Struktur kannst du für alle Monate fortsetzen, wobei die fortlaufende Zahl in Spalte A automatisch generiert wird.


Tipps für Profis

  • Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Überprüfe regelmäßig den Code auf mögliche Fehlerquellen und Debugging-Hinweise.
  • Verwende Kommentare im Code, um die Funktionsweise zu erklären, besonders wenn du mit anderen zusammenarbeitest.

FAQ: Häufige Fragen

1. Wie kann ich die fortlaufende Nummer für ein spezifisches Tabellenblatt anpassen?
Du kannst die Zeile Worksheets(CByte(Month(Date))).Activate ändern, um ein spezifisches Tabellenblatt zu aktivieren, z.B. Worksheets("MeinBlatt").Activate.

2. Funktioniert dieser VBA-Code in Excel 2007 oder neuer?
Ja, der Code ist kompatibel mit Excel 2007 und neueren Versionen, solange die Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige