Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1536to1540
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 Max(Range) nächste freie Zahl

Statt Max(Range) nächste freie Zahl
21.01.2017 17:36:36
Sabrina
Hallo Leute,
ich habe bislang die Kundennummer mit der Suche der höchsten Zahl +1 vergeben.
Nun haben wir den Kundenstamm ausgemistet.
Jetzt sind in dem Bereich viele Nummern frei.
Daher möchte ich die freien Nummern wieder vergeben.
In zukunft soll die nächste freie Zahl als Kundennummer vergeben werden.
Wie kann man das umsetzten. Kann mir jemand helfen?
LG Sabbel
Sub Kunde_speichern()
Dim KdMax As Long
Dim KdNr As Long
KdMax = Application.WorksheetFunction.Max(Range("A:A"))
If Range("KundenNr") = "" Then
KdNr = KdMax + 1
Else
KdNr = Range("KundenNr")
End If
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

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Statt Max(Range) nächste freie Zahl
21.01.2017 17:45:18
Hajo_Zi

Option Explicit
Sub Kunde_speichern()
Dim RaFound As Range
Dim BoGefunden As Boolean
Dim LoI As Long
For LoI = 1 To Application.WorksheetFunction.Max(Range("A:A"))
Set RaFound = Columns(1).Find(LoI, Range("A" & Rows.Count), xlFormulas, _
xlWhole, , xlNext)
If RaFound Is Nothing Then
BoGefunden = True
MsgBox "Nächste Nummer " & LoI
Exit For
End If
Next LoI
If BoGefunden = False Then
MsgBox "Nächste Nummer " & Application.WorksheetFunction.Max(Range("A:A")) + 1
End If
End Sub

AW: Statt Max(Range) nächste freie Zahl
21.01.2017 17:50:13
Anton
Hallo Sabrina,
von mir auch noch ein Vorschlag:
Sub KundenNummerFortlaufend()
Dim rngZelle As Range
Dim rngBereich As Range
Dim wksBlatt As Worksheet
Dim dblLarge As Double
Set wksBlatt = ThisWorkbook.Worksheets("Tabelle3") 'Tabelleblatt anpassen
With wksBlatt
Set rngBereich = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
For Each rngZelle In rngBereich
dblLarge = Application.WorksheetFunction.Large(rngBereich, 1)
Debug.Print dblLarge
If rngZelle = "" Then
rngZelle.Value = dblLarge + 1
End If
Next rngZelle
End With
End Sub
VG Anton
Anzeige
AW: Statt Max(Range) nächste freie Zahl
21.01.2017 17:52:31
Anton
Zeile

Debug.Print dblLarge
kann raus :)
Danke Anton, es funktioniert wunderbar!
21.01.2017 19:50:52
Sabrina
Danke Anton!
Schön dass einem hier geholfen wird und nicht alle blassiert sind!
AW: Statt Max(Range) nächste freie Zahl
21.01.2017 18:45:14
Sabrina
Hallo Hajo,
ich bin deine Methode am Testen.
Aber es kommt immer die Meldung dass die Zahl 1 wäre :(
Bekomme es nicht eingebunden.
Wie muss ich es denn in meiner Methode einbinden?
LG
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("Erfassung.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("Erfassung.xls").Activate
Sheets("Eingabe Endkunde").Select
Range("KundenNr") = KdNr
Range("speicher") = "Daten gespeichert"
Application.GoTo Reference:="spe8"
Windows("Kunden.xls").Visible = False
End Sub

Anzeige
AW: Statt Max(Range) nächste freie Zahl
21.01.2017 18:47:18
Hajo_Zi
in meiner Datei wird die richtige Zahl mit meinem Makro angezeigt. Deine Datei sehe ich nicht, da ich nicht auf fremde Rechner schaue.
Gruß Hajo
AW: Statt Max(Range) nächste freie Zahl
21.01.2017 18:53:34
Sabrina
Kannst du vielleicht deine Datei hochladen?
AW: Statt Max(Range) nächste freie Zahl
21.01.2017 18:55:58
Hajo_Zi
Warum sollte ich da, Du hältst es doch auch nicht für notwendig. In Deiner Datei geht es nicht.
Gruß Hajo
AW: Statt Max(Range) nächste freie Zahl
21.01.2017 19:01:21
Sabrina
Schade.
Wieso gibst du dir denn überhaupt die Mühe wenn du am Ende doch nicht hilfst?
AW: Statt Max(Range) nächste freie Zahl
21.01.2017 19:02:07
Hajo_Zi
Mein Code liefert die richtige Lösung.
Gruß Hajo
Anzeige
AW: Statt Max(Range) nächste freie Zahl
21.01.2017 22:11:09
Luschi
Hallo Sabrina,
hier mal meine Version zum Testen:
https://www.herber.de/bbs/user/110786.xls
Gruß von Luschi
aus klein-Paris
PS: hoffe, daß ein paar Kommentare im Vba-Code dir helfen.
Natürlich ist es immer besser, wenn der/die Fragesteller/in die Testdatei liefert!!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige