Anzeige
Archiv - Navigation
1128to1132
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

freie Zahl generieren | Herbers Excel-Forum

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige