Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
---           Seid nett und helft einander :100:           ---
---   denn die Liebe ist die größte Kraft im Universum    ---
- Lest die Werke von Jakob Lorber und Gottfried Mayerhofer -
Antworten Top
#3
Hallo JereMaia,

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

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

if(lngZeile<0) then lngZeile = 0
---           Seid nett und helft einander :100:           ---
---   denn die Liebe ist die größte Kraft im Universum    ---
- Lest die Werke von Jakob Lorber und Gottfried Mayerhofer -
Antworten 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
Antworten 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
---           Seid nett und helft einander :100:           ---
---   denn die Liebe ist die größte Kraft im Universum    ---
- Lest die Werke von Jakob Lorber und Gottfried Mayerhofer -
Antworten Top
#7
Hallo JereMaia,

ja, ich benutze eine Userform.

Denoch vielen Dank.
Antworten 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.
---           Seid nett und helft einander :100:           ---
---   denn die Liebe ist die größte Kraft im Universum    ---
- Lest die Werke von Jakob Lorber und Gottfried Mayerhofer -
Antworten 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
Antworten 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
Antworten Top


Gehe zu:


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