Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

freie Zahl generieren | Herbers Excel-Forum

Forumthread: freie Zahl generieren

freie Zahl generieren
17.01.2010 09:09:05
Helge Kuehn

Hi alle zusammen,
Ich hab ein Button und ein Textfeld. Nun soll der Button die Funktion haben, eine neue 5 stellige Zahl zu generien. Dabei soll er in die Tabelle1 in Spalte B schauen und einen nicht vorhandene Nummer erstellen.
Weiss gar nicht wie ich das angehen soll. Hab schon ueberleget, dass ich die hoechste zahl +1 suche und ausgebe. Das kann aber probleme auf zeit geben, da es nach 99999 dann keine mehr gibt, obwohl bsp. noch 5000 Zahlen dazwischen frei sind.
Gruss Helge

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: freie Zahl generieren
17.01.2010 09:19:44
Nepumuk
Hallo Helge,
ein Beispiel:
Public Sub Test()
    Dim lngNumber As Long
    Do
        lngNumber = Fix(Rnd * 89999 + 10000)
        If WorksheetFunction.CountIf(Tabelle1.Columns(1), lngNumber) = 0 Then Exit Do
    Loop
    Debug.Print lngNumber
End Sub

Gruß
Nepumuk
Anzeige
AW: freie Zahl generieren
17.01.2010 09:21:42
Josef Ehrensberger
Hallo Helge,
Private Sub CommandButton1_Click()
  Dim lngMin As Long, lngMax As Long, lngIndex As Long
  
  With Application
    lngMin = .Max(9999, .Min(Me.Columns(2))) + 1
    lngMax = .Min(99998, .Max(Me.Columns(2))) + 1
    TextBox1 = ""
    
    For lngIndex = lngMin To lngMax
      If IsError(.Match(lngIndex, Me.Columns(2), 0)) Then
        TextBox1 = CStr(lngIndex)
        Exit For
      End If
    Next
  End With
  
End Sub

Gruß Sepp
Anzeige
AW: freie Zahl generieren
17.01.2010 09:50:17
Helge Kuehn
Danke fuer beide Antworten!
Ich hab mich fuer sepps entschieden, aber es laeuft noch nicht wie gewollt. Wenn ich den Button ausloese, wird keine zahl angezeigt, aber ein Fehler wird auch nicht angezeigt.
Private Sub CommandButton3_Click()
Dim lngMin As Long, lngMax As Long, lngIndex As Long
With Sheets("Product list")
With Application
lngMin = .Max(9999, .Min(.Columns(2))) + 1
lngMax = .Min(99998, .Max(.Columns(2))) + 1
txt2 = ""
For lngIndex = lngMin To lngMax
If IsError(.Match(lngIndex, .Columns(2), 0)) Then
txt2 = CStr(lngIndex)
Exit For
End If
Next
End With
End With
End Sub
was ist falsch ?
Anzeige
AW: freie Zahl generieren
17.01.2010 09:53:46
Josef Ehrensberger
Hallo Helge,
Private Sub CommandButton3_Click()
  Dim lngMin As Long, lngMax As Long, lngIndex As Long
  
  With Application
    lngMin = .Max(9999, .Min(Sheets("Product list").Columns(2))) + 1
    lngMax = .Min(99998, .Max(Sheets("Product list").Columns(2))) + 1
    txt2 = ""
    
    For lngIndex = lngMin To lngMax
      If IsError(.Match(lngIndex, Sheets("Product list").Columns(2), 0)) Then Exit For
    Next
  End With
  txt2 = CStr(lngIndex)
End Sub

Gruß Sepp
Anzeige
AW: kleine optimierung
17.01.2010 17:48:02
Daniel
HI
ich würde den Startpunkt der Schleife fix auf die kleinste zulässige Zahl einstellen.
es könnte ja sein, daß die kleinste vorhandene Zahl grösser ist, als die kleinste Zulässige und dann würden die Werte dazwischen nicht berücksichtigt werden.
lngMin = 10000
Gruß. Daniel
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige