Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1632to1636
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

statt höchste Zahl die erste freie Zahl

statt höchste Zahl die erste freie Zahl
09.07.2018 23:13:39
Sabrina
Hallo,
mit dem Folgenden Marko wird nach der höchsten Kundennummer gesucht. (Spalte A)
Dann in der ersten freien Zeile Max+1 eingetragen und die Werte geschrieben.
Nun sind aber viele Kundennnummern gelöscht worden.
Was muss ich tun das in der ersten leeren Zeile die erste nicht vergebene Nummer vergeben wird.
Also in
A1 = 110001
A2 = 110003
A3 = 110004
A4 = 110005
Nun soll in A5 110002 geschrieben werden
Liebe Grüße Sabbel
Sub Kunde_speichern()
Dim KdMax As Long
Dim KdMin As Long
Dim KdNr As Long
Application.ScreenUpdating = False
Windows("Kunden.xls").Activate
Sheets("Kundenstamm").Select
Range("KundenNummer").Select
KdMax = Application.WorksheetFunction.Max(Range("A:A"))
KdMin = Application.WorksheetFunction.Min(Range("A:A"))
Windows("Eingabe.xls").Activate
Sheets("Eingabe Endkunde").Select
spe1 = Range("spe1")
Nachname = Range("Nachname")
Vorname = Range("Vorname")
spe4 = Range("spe4")
spe5 = Range("spe5")
spe22 = Range("spe22")
spe6 = Range("spe6")
spe7 = Range("spe7")
spe116 = Range("spe116")
kontakt2 = Range("kontakt2")
kontakt3 = Range("kontakt3")
Annahmestelle = Range("Annahme")
ust_id = Range("ust_id")
If Range("KundenNr") = "" Then
KdNr = KdMax + 1
Else
KdNr = Range("KundenNr")
End If
Windows("Kunden.xls").Activate
Sheets("Kundenstamm").Select
Range("KundenNummer").Select
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = KdNr Then
Cells(i, 1).Select
GoTo weiter
End If
Next
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Select 'letzte leere zelle
GoTo weiter
weiter:
ActiveCell.Select
ActiveCell = KdNr
Selection.Offset(0, 1) = spe1
Selection.Offset(0, 2) = Nachname
Selection.Offset(0, 3) = Vorname
Selection.Offset(0, 4) = spe4
Selection.Offset(0, 5) = spe5
Selection.Offset(0, 6) = spe22
Selection.Offset(0, 7) = spe6
Selection.Offset(0, 8) = spe7
Selection.Offset(0, 9) = spe116
Selection.Offset(0, 10) = kontakt2
Selection.Offset(0, 11) = ust_id
Selection.Offset(0, 12) = kontakt3
Selection.Offset(0, 13) = Annahmestelle
ActiveWorkbook.Save
Windows("Eingabe.xls").Activate
Sheets("Eingabe Endkunde").Select
Range("KundenNr") = KdNr
Range("speicher") = "Daten gespeichert"
Application.GoTo Reference:="spe8"
Windows("Kunden.xls").Visible = False
End Sub

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: statt höchste Zahl die erste freie Zahl
10.07.2018 00:39:32
Rob
Versuch es mal mit folgendem Code. Voraussetzung ist aber, dass sich die ersten zwei Stellen der Kundennummern nicht erhöhen, also z.B. von 11 auf 12:
Sub FehlendeKundennummern()
Dim x As Integer
Dim r As Range
Dim ArrayKdNr()
Dim i As Integer
x = 1
i = 1
ReDim ArrayKdNr(i)
For Each r In Intersect(UsedRange, Range("A:A"))
If Right(r, 4)  x Then
ArrayKdNr(i) = r - 1
i = i + 1
x = x + 1
ReDim Preserve ArrayKdNr(i)
End If
x = x + 1
Next r
Range("A" & Cells(Rows.Count, 1).End(xlUp).Row + 1).Activate
For x = 1 To UBound(ArrayKdNr, 1)
ActiveCell = ArrayKdNr(x)
ActiveCell.Offset(1, 0).Activate
Next x
End Sub

Anzeige
AW: statt höchste Zahl die erste freie Zahl
10.07.2018 00:49:28
Rob
Wenn Du z.B. zwei fehlende Kundennummern zwischen zwei Zellen/Zeilen hast, also z.B.
110001
110004
dann einfach aufsteigend sortieren und den Code nochmal ausführen.
AW: statt höchste Zahl die erste freie Zahl
10.07.2018 01:47:11
Daniel
Hi
finde die nächste freie Kundennummer geht so:
dim i as long
with Worksheetfunction
for i = .Min(Columns(1)) To .Max(Columns(1))
if .Countif(Columns(1), i) = 0 then Exit For
next
end with
Cells(rows.count, 1).End(xlup).Offset(1, 0).Value = i
Gruß Daniel
AW: statt höchste Zahl die erste freie Zahl
10.07.2018 07:44:28
Rob
Damit findet er aber nur eine gelöschte Kundennummer. Ich habe es so verstanden, dass viele gelöscht wurden...
Anzeige
AW: statt höchste Zahl die erste freie Zahl
10.07.2018 09:10:31
Daniel
Hi
es wird die niedrigste gelöschte gesucht:
"Was muss ich tun das in der ersten leeren Zeile die erste nicht vergebene Nummer vergeben wird. "
damit sollte mein Code ausreichen.
Gruß Daniel
AW: statt höchste Zahl die erste freie Zahl
10.07.2018 08:30:32
Gerd
Hallo,
ja, aber Daniels Code entspricht der weiteren Fragestellung.
Mit dieser kleinen Ergänzung wird die vorhandene u. die gesuchte Prüfung kombiniert.
dim i as long
with Worksheetfunction
for i = .Min(Columns(1)) To .Max(Columns(1)) + 1
if .Countif(Columns(1), i) = 0 then Exit For
next
end with
Cells(rows.count, 1).End(xlup).Offset(1, 0).Value = i
Gruß Gerd
Anzeige
AW: statt höchste Zahl die erste freie Zahl
10.07.2018 08:33:08
Gerd
Hallo,
ja, aber Daniels Code entspricht der weiteren Fragestellung.
Mit dieser kleinen Ergänzung wird die vorhandene u. die gesuchte Prüfung kombiniert.
dim i as long
with Worksheetfunction
for i = .Min(Columns(1)) To .Max(Columns(1)) + 1
if .Countif(Columns(1), i) = 0 then Exit For
next
end with
Cells(rows.count, 1).End(xlup).Offset(1, 0).Value = i
Gruß Gerd
AW: statt höchste Zahl die erste freie Zahl
10.07.2018 18:59:22
Sabrina
Hallo
vielen Dank für eure Hilfe.
Bekomme es aber leider nicht richtig eingefügt.
An welcher Stelle muss der Code eingefügt werden?
Habe noch vergessen zu sagen dass die erste Zeile die Überschriftszeile ist.
LG
Sabbel
Anzeige
AW: statt höchste Zahl die erste freie Zahl
10.07.2018 19:18:57
Rob
Füge meinen Code als neue Sub direkt in das Arbeitsblatt (z.B. Tabelle1) ein.
AW: statt höchste Zahl die erste freie Zahl
10.07.2018 19:08:08
Daniel
Hi Gerd
diese Erweiterung ist nicht notwendig.
nach einem vollständigen Durchlauf der For-Schleife ist der Schleifenzähler immer größer als der Schleifenendwert (bzw kleiner bei step - 1)
und bei einem Datenfeld ohne Lücken ergibt sich der nächste Wert automatisch.
Gruß Daniel
AW: statt höchste Zahl die erste freie Zahl
10.07.2018 20:17:26
Sabrina
Danke, Rob Daniel und Gerd.
Ich bekomme es leider nicht in den vorhanden Code eingebunden so dass :
a) Neu Anlegen :wenn bei Ausführung der Methode keine Kundennummer in Range("KundenNummer") steht in der ersten leeren Zeile die erste freie Kundennummer eingetragen wird.
b) Aktualisieren : wenn in Range("KundenNummer") was steht die Zeile markiert wird nun die Werte neu in die Zeile geschrieben werden.
Ganz liebe Grüße
Sabbel
Anzeige
AW: statt höchste Zahl die erste freie Zahl
11.07.2018 15:23:26
Rob
Hi Sabbel,
ehrlich gesagt verstehe ich nicht was Du meinst. Du musst den Code nicht in Dein bestehendes Modul einbinden. Er (der neue Code) ist dafür vorgesehen, die gelöschten Kundennummern nachträglich an das Spaltenende anzufügen. Einfach direkt in das Arbeitsblatt oder über ein neues Modul ausführen. Für das Modul musst Du aber noch ggf. direkte Verweise auf das Arbeitsblatt ergänzen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige