fortlaufende Nummerierung
#1
Hallo clever - excel - forum,

ich habe ein kleines Problem mit fortlaufender Nummerierung.
Folgendes Makro habe ich gefunden und es funktioniert auch soweit einwandfrei, wenn eine Zahl bereits in der entsprechenden Spalte steht.
Ist die Spalte jedoch noch leer, dann kommt eine Fehlermeldung.

Hier erstmal das Makro:

Private Sub UserForm_Initialize()
   Dim lngZeile As Long
   With Worksheets("Tabelle1")
       lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
       TextBox1.Value = .Cells(lngZeile, 1).Value + 1
   End With
End Sub

Wie kann ich nun das Makro erweitern, damit wenn keine Zahl in der Spalte steht, es mit 1 beginnt?

Ich bin für jede Hilfe dankbar.

Peter
Top
#2
Ich würde es so umcoden: (nicht getestet)

Code:
Private Sub UserForm_Initialize()
  Dim lngZeile As Long
  With Worksheets("Tabelle1")
      lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
      if(lngZeile<0) then lngZeile = 1
      TextBox1.Value = lngZeile
  End With
End Sub
Top
#3
Hallo JereMaia,

funktioniert nicht so ganz, das Makro beginnt jetzt immer bei 2 an zu zählen.

MfG Peter
Top
#4
ändere mal folgende Zeile aB..

if(lngZeile<0) then lngZeile = 0
Top
#5
Hallo JereMaia,

funktioniert immer noch nicht so ganz, das Makro beginnt jetzt immer bei 2 an zu zählen, und zählt nicht mehr hoch.

Code:
lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
sucht die letzte Zeile in der Spalte

Code:
if(lngZeile<0) then lngZeile = 0
dieser Teil sagt doch aus, wenn der Inhalt kleiner 0, dann 0

Aber es kommt immer eine 2 heraus.

Ein weiterzählen (+1) fehlt!

MfG Peter
Top
#6
Ich glaube ich habe dich falsch verstanden.
Ich habe dasganze bei mir getestet, allerdings den Wert gleich in eine Zelle schreiben lassen.
Deshalb zählte es bei mir automatisch hoch. Du verwendets eine UserForm.


Code:
Private Sub UserForm_Initialize()
  Dim lngZeile As Long
  Dim Wert as long
  With Worksheets("Tabelle1")
      lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
      if(lngZeile = 0) then lngzeile = 1
      Wert =  .Cells(lngZeile, 1).Value + 1
      TextBox1.Value = Wert
  End With
End Sub
Top
#7
Hallo JereMaia,

ja, ich benutze eine Userform.

Denoch vielen Dank.
Top
#8
Das ganze ist etwas tricky. Bei Deinem Code passiert glaube ich folgendes: Wenn nichts in der Spalte steht dann ist der Wert in lngzeile = 0. Und dann will er den Wert aus der zelle (0,1) lesen und ich glaube da passiert dann der Fehler.
Deshalb müsste man in diesem speziellen Fall die Zeile auf 1 setzen damit der die Zelle (1,1) ausliest.
Top
#9
Hallo,

das Problem hätte man analysieren können, indem man den Code schrittweise mit F8 durchgegangen wäre. Dann hätte man erkannt, dass lngZeile nicht den Wert 0 annimmt, sondern 1. Allerdings ist der Wert des Inhalts von Zelle A1 nicht 0, sondern "" (also ein Leerstring). Und zu einem String kann man nichts addieren.

Frage also ab, ob in A1 etwas drinsteht oder nicht:

Code:
Private Sub UserForm_Initialize()
Dim lngZeile As Long, Wert As Long
With Worksheets("Tabelle1")
   lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
   If .Cells(lngZeile, 8).Value = "" Then
       Wert = 0
   Else
       Wert = .Cells(lngZeile, 1).Value
   End If
   TextBox1.Value = Wert + 1
End With
End Sub

Achtung: Der Code hinterfragt nicht, ob in der Zelle eine Zahl steht. Enthält diese Zelle Text, wird VBA meckern.

Alternativ - und kürzer - kann man den Leerstring auch in eine Zahl umwandeln:

Code:
Private Sub UserForm_Initialize()
 Dim lngZeile As Long
 With Worksheets("Tabelle1")
     lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
     TextBox1.Value = CLng(.Cells(lngZeile, 1).Value) + 1
 End With
End Sub
Schöne Grüße
Berni
Top
#10
Hallo

den Fall einfach so abfangen, der kommt ja nur vor wenn die erste Zelle leer ist.

mfg Gast 123


Code:
Private Sub UserForm_Initialize()
 Dim lngZeile As Long
 Dim Wert As Long
 With Worksheets("Tabelle1")
     lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
     Wert = .Cells(lngZeile, 1).Value + 1
     If lngZeile = 1 And Wert = 0 Then
        Wert = 1: .Cells(1, 1).Value = 1
     End If
     TextBox1.Value = Wert
 End With
End Sub
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste