Niedrigste Freie Zahl in Zahlenreie
31.01.2017 16:36:13
Chatzebuseli
Ich stehe wider mal etwas auf dem Schlauch.
Ich benötige in einem Projekt einen "Artikelnummer- Generator". Bis jetzt hat das Modul das Ihn beschreibt auch ganz gut funktioniert. Nun bin ich aber auf einen Problem gestossen. Wenn in der Artikelliste ein verkaufter Artikel rausgelösche, haut er nicht mehr hin.
Kurz zur Zusammensetzung der Artikelnummer:
Für den Benutzer sieht die z.B. so aus:
01-036-0004
Das "01" steht für die Art des Artikels.(Für uns hier nicht wirklich relevant da es gleichzeitig die Tabelle widerspiegelt. In diesem Fall eine Halskette. Halsketten = Tabelle 1.)
"036" bezeichnet das Mineral aus welchem der Artikel hergestellt ist.( Wird automatisch mit hilfe einer durchnummerierten Mineralienliste erstellt.)
Nun zum eigendlich Interresannten bzw. Problematischen Teil.
"0004" Ist eine fortlaufende nummerierung der Halsketten aus dem selben Mineral.
In einem Ersten Schritt schreibe ich die fortlaufende Nummer in eine extra Spalte in der Tabelle für alle Artikel des selben Minerals.
Code:
Do While Tabelle2.Cells(NZei, 2).Value Empty
VarSp2AktuellWert = Trim(CStr(Tabelle2.Cells(NZei, 2).Text))
If VarSp2AktuellWert = ArtnrTeil2 Then
AnzArt = AnzArt + 1
Tabelle2.Cells(A, 59).Value = Tabelle2.Cells(NZei, 3).Value
A = A + 1
End If
NZei = NZei + 1
Loop
Nun zur eigendlichen Frage:
Wie muss ich das anstellen das ich die KLEINSTE NICHTVORHANDENE ZAHL in dieser Provisorisch erstellten Spallte ermitteln kann auch wenn es immer wieder lerre zellen in dieser Spalte enthält?
Mein Bisheriger Code zum ermitteln der vortlaufender Nummer
For A = 1 To AnzArt
Do While Tabelle2.Cells(NZei, 59).Value Empty
VarSp3AktuellWert = Trim(CStr(Tabelle2.Cells(NZei, 59).Value))
If VarSp3AktuellWert = A Then
strEingabewertArtnr3 = strEingabewertArtnr3 + 1
NZei = NZei + 1
Exit Do
Else
strEingabewertArtnr3 = A
Exit For
End If
NZei = NZei + 1
Loop
Next
Das Problem an diesem Code ist das er nur solange funktioniert, solange die Zahlenrheie unterbruchslos weiter läuft.Wird aber ein Artikel gelöscht(Verkauft) so haut er nicht mehr hin. Wenn ich aber die Artikelnummer eines rausgelöschten artikels für einen Artikel nutzen möchte geht das so nicht.
Was muss ich ändern bzw.wie kann ich erreichen das er mir immer die kleinze freie Zahl als laufende Nummer ausgiebt?
Ich danke Euch jetzt schon im Voraus für eure Hilfe.
Griessli Chatzebuseli