Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fortlaufende Nummerierung in Spalte über VBA

Forumthread: Fortlaufende Nummerierung in Spalte über VBA

Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 20:08:15
Werner
Hallo zusammen,
möchte in Spalte A ab A3 fortlaufende Nummern eingeben lassen. Hab ein
Userform, wo Daten eigegeben werden und in die Tabelle (A3 bis G100),
zeilenweise, übertragen werden.
Sobald auf den Button "nächster Datensatz" geklickt wird, wird automatísch
die nächste Zeile aktiviert und der neue Datensatz kann eingetragen werden
usw.
Jetzt soll bei wechsel in die neue Zeile A7 z.Bsp., auch in A7 die neue
fortlaufende Nummer stehen A3 = 1, A4 = 2, A5 = 3 ......usw.
Habe es mit 'ActiveCell (1, 0) +1' schon probiert, aber das ist wohl nicht
das richtige. Die Option 'LastCell' gibt's da wohl nicht...
Für Eure Hilfe schon jetzt dankeschön!
Grüße
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 20:26:48
ivan


hi werner
zufällig verwende ich so ein beispiel.
dü mußt noch die spalten u. tabelle anpassen.
'füllt automatisch tabelle1 mit zahlen
Sub zahlen()
Application.ScreenUpdating = False
  On Error Resume Next
    If Err.Number <> 0 Then
      End If
   Sheets("Tabelle1").Activate
    lz = Range("D1").CurrentRegion.Rows.Count
      Range("D1") = 1
       Range("D2").FormulaR1C1 = "2"
        Range("D1:D2").AutoFill Destination:=Range("D1:D" & lz), Type:=xlFillDefault
Application.ScreenUpdating = True
End Sub
gruss
ivan

Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 20:34:39
PeterW
Hallo Ivan,
warum
Range("D2").FormulaR1C1 = "2" ?
Der Makrorekorder ist zwar ein nützliches Hilfsmittel, erfordert aber in der Regel etwas Nachbearbeitung. Range("D2") = 2 reicht vollkommen aus.
Nichts für ungut, aber noch unerfahrenere Mitleser sollten es schon richtig dargestellt bekommen, sonst werden wir in Zukunft all die "Fehlerchen" korrigieren müssen, die sich durch Übernahme solcher Zeilen einschleichen. :-)
Gruß
Peter

Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 20:48:37
ivan
hi PeterW
in meinem beispiel kann man die reihenfolge einstellen,falls du das noch nicht geschnallt hast.1 2 oder 1 3 je nach bedarf kann es dann geändert werden .
ich finde es so wie es ist ok.
gruss
ivan

AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 21:06:44
PeterW
Hallo Ivan,
geschnallt hab ich schon, was der Code soll. :-)
Wollte nur darauf hinweisen, dass es nicht nötig ist, per FormulaR1C1 einen Wert in eine Zelle zu schreiben. Das kann man auch direkt erledigen.
Sorry, wenn ich dir auf den Schlips getreten habe. :-)
Gruß
Peter

Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 21:26:11
ivan
hi PeterW
lol:))kein problem
du hast ja recht
ich hab es hergegeben damit er es einmal hat,und wenn eine frage kommt
dann werdem wir sie ihm halt beantworten
hi Werner
ps:funkt es schon du mußt natürlich was reinschreiben links oder rechts von der zelle.
die zahlen werden nur gefüllt wenn was in der zelle rechts oder links stehr.
gruss an alle
ivan

Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 21:37:05
PeterW
Hallo Ivan,
eigentlich wollte ich nichts mehr schreiben aber jetzt scheint es mir, dass DU nicht geschnallt hast, worauf ich hinaus wollte. :-)
Statt
Cells(Zeile, Spalte).FormulaR1C1 = "2"
kannst du direkt im Code schreiben
Cells(Zeile, Spalte) = 2
oder
Cells(Zeile, Spalte).Value = 2
.FormulaR1C1 oder .FormulaLocal ist nur nötig, wenn du Formeln in eine Zelle schreiben willst/musst.
Gruß und schönen Abend noch
Peter

Anzeige
AW: ich habe es geschnallt!!!
13.07.2003 22:06:55
ivan
hi peter
ich habe es ja eh geschnallt .
das meinte ich ja mit "du hast ja recht."
alles liebe
gruss aus wien
ivan

AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 20:25:09
PeterW
Hallo Werner,
wenn du mit 'LastCell' den Wert der letzten benutzen Zelle in Spalte A meinst:

Sub LetzterWertInSpalteA()
Dim vWert As Variant
vWert = Cells(Range("A65536").End(xlUp).Row, 1)
MsgBox vWert
End Sub

Gruß
Peter

Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 22:41:18
Werner
danke für die Info's,
habe dein macro getestet.. bekomme nur die meldung über den wert der letzten zahl. möchte aber das fortlaufend nummeriert wird sobald ein eintrag in eine neue zeile über die userform getätigt wird.
Ist wie eine adressverwaltung zu sehen, nur zusätzlich mit nummerierung am anfang in spalte 1.
danke noch mal!
grüße

Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 22:56:00
PeterW
Hallo Werner,
der Code war auch nur als Ansatz gedacht. Leider schreibst du nicht, wie du per Code die Daten aus der UF in die Tabelle schreibst. Vielleicht hilft dir das weiter, wenn nicht poste bitte den Code den du benutzt um in die Tabelle zu schreiben.

Sub Werner()
Dim lgLetzte As Long
'letzte Zelle in Spalte A ermitteln
lgLetzte = Range("A65536").End(xlUp).Row
'nächste Zelle in A mit der nächsten Nummer füllen
Cells(lgLetzte + 1, 1) = Cells(lgLetzte, 1) + 1
End Sub

Gruß
Peter

Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 22:45:42
OliveR
Hallo Werner,
Peters Code ist schon ok, du musst nur die letzet Zeile + 1 den Wert +1 schreiben.

Sub LetzteZeileNummer()
Dim LR as Integer
lR = Cells(Range("A65536").End(xlUp).Row, 1)
Cells(lR+1, 1) = Cells(lR,1)+1
End Sub

Gruß OliveR

Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 23:12:56
PeterW
Hallo OliveR,
es macht schon Sinn, Code zu testen und dann den Code aus dem VBE hierhin zu kopieren. Schau dir mal an, was du hier in lR einliest und verarbeitest:
lR = Cells(Range("A65536").End(xlUp).Row, 1)
Cells(lR+1, 1) = Cells(lR,1)+1
Gruß
Peter
PS: ist nicht bös gemeint aber ich denke schon, dass Code getestet werden sollte. :-)

Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 23:17:56
OliveR
Jo Peter,
habe bereits drauf reagiert. Ich habe es wohl zu flott aus der Hüfte geschrieben...
ne schöne Woche noch..
Gruß
OliveR

AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 22:55:39
Werner
da sagt mir excel nur 'typen unverträglich' ...??!!!
danke

AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 23:11:04
OliveR
Hallo Werner,
habe vergessen
Cells(lR+1,1) = Cells(lR,1).Value +1
Natürlich vorausgesetzt, dass in der Zeile vorher eine Zahl drin ist. Ansonsten musst Du mit IF Schleife es abfangen.
dim LR ...
lR = ......
If lR = 3 Then
Cells(lR,1) = 1
Else Cells(lR+1,1) = Cells(lR,1).Value +1
End if
Gruß
OliveR

Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 23:11:04
OliveR
Hallo Werner,
habe vergessen
Cells(lR+1,1) = Cells(lR,1).Value +1
Natürlich vorausgesetzt, dass in der Zeile vorher eine Zahl drin ist. Ansonsten musst Du mit IF Schleife es abfangen.
dim LR ...
lR = ......
If lR = 3 Then
Cells(lR,1) = 1
Else Cells(lR+1,1) = Cells(lR,1).Value +1
End if
Gruß
OliveR

Anzeige
AW: Fortlaufende Nummerierung in Spalte über VBA
13.07.2003 23:24:26
OliveR
Sollte echt nicht zu lange aufbleiben.

Sub LetzteZeileNummer()
Dim LR As Integer
LR = Cells(Rows.Count, 1).End(xlUp).Row
If LR = 2 Then 'setzt voraus, dass in den Zeilen 1 und 2 was steht....
Cells(LR + 1, 1) = 1
Else
Cells(LR + 1, 1) = Cells(LR, 1).Value + 1
End If
End Sub


Anzeige
VIELEN DANK AN ALLE ! ! !
14.07.2003 14:06:08
Werner
.

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fortlaufende Nummerierung in Excel über VBA


Schritt-für-Schritt-Anleitung

Um eine fortlaufende Nummerierung in einer Excel-Spalte über VBA zu realisieren, kannst du folgende Schritte befolgen:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (deine_datei.xlsx)" und wähle Einfügen > Modul.
  3. Erstelle das Makro zur fortlaufenden Nummerierung:

    • Kopiere und füge den folgenden Code in das Modul ein:
    Sub FortlaufendeNummerierung()
       Dim letzteZeile As Long
       letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row ' Letzte benutzte Zeile in Spalte A ermitteln
       Cells(letzteZeile + 1, 1).Value = letzteZeile + 1 ' Fortlaufende Nummer in die nächste Zeile einfügen
    End Sub
  4. Schließe den VBA-Editor:

    • Gehe zurück zu Excel und speichere deine Datei als Makro-fähige Datei (.xlsm).
  5. Führe das Makro aus:

    • Gehe zu Entwicklertools > Makros, wähle FortlaufendeNummerierung und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Typen unverträglich: Dieser Fehler tritt häufig auf, wenn du versuchst, einen Textwert in eine Zelle einzufügen, die eine Zahl erwartet. Stelle sicher, dass in der vorherigen Zeile eine Zahl steht.

  • Falsche Zeile ermittelt: Wenn die letzte Zeile nicht korrekt ermittelt wird, überprüfe, ob in der Spalte A tatsächlich Werte vorhanden sind.

  • Makro wird nicht ausgeführt: Stelle sicher, dass Makros in deinen Excel-Einstellungen aktiviert sind.


Alternative Methoden

  1. Einfügen einer Formel: Anstatt ein Makro zu verwenden, kannst du auch einfach eine Formel in die Zelle einfügen, die die fortlaufende Nummerierung automatisch aktualisiert.

    • In Zelle A3: =WENN(B3<>"",MAX(A$2:A2)+1,"")
    • Ziehe die Formel nach unten, um sie auf die weiteren Zeilen anzuwenden.
  2. Tabelle formatieren: Wenn du eine Excel-Tabelle verwendest, kannst du die automatische Nummerierung aktivieren, indem du eine Spalte mit dem Namen „Nummer“ hinzufügst und diese mit einer Formel versiehst.


Praktische Beispiele

  1. VBA zur automatischen Nummerierung mit Bedingungen:

    Sub AutomatischeNummerierungMitBedingung()
       Dim letzteZeile As Long
       letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
    
       If Cells(letzteZeile, 2).Value <> "" Then ' Nur nummerieren, wenn in Spalte B etwas steht
           Cells(letzteZeile + 1, 1).Value = letzteZeile + 1
       End If
    End Sub
  2. Fortlaufende Nummerierung und Text kombinieren:

    Sub NummerMitText()
       Dim letzteZeile As Long
       letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
       Cells(letzteZeile + 1, 1).Value = "Eintrag " & letzteZeile + 1 ' Beispiel für Text mit Nummer
    End Sub

Tipps für Profis

  • Fehlerbehandlung einbauen: Verwende On Error Resume Next, um potenzielle Fehler zu ignorieren und fortzufahren.

  • Automatisierung: Du kannst das Makro auch mit einem Button auf deinem Arbeitsblatt verknüpfen, um die Ausführung zu erleichtern.

  • Mehrstufige Nummerierung: Um eine mehrstufige Nummerierung zu erstellen, kannst du eine Kombination aus mehreren Spalten verwenden, z.B. eine Kategorie und eine fortlaufende Nummer.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Nummerierung nicht dupliziert wird? Um eine doppelte Nummerierung zu vermeiden, überprüfe die letzte Zeile vor dem Einfügen einer neuen Nummer. Du kannst dies durch den Code zum Ermitteln der letzten Zeile sicherstellen.

2. Kann ich die Nummerierung in einer anderen Spalte durchführen? Ja, ändere einfach die Spaltenreferenz im Code von Cells(letzteZeile + 1, 1) zu Cells(letzteZeile + 1, 2) für Spalte B oder eine andere Spalte.

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