Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

freie Zahl generieren | Herbers Excel-Forum


Betrifft: freie Zahl generieren von: Helge Kuehn
Geschrieben am: 17.01.2010 09:09:05

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

  

Betrifft: AW: freie Zahl generieren von: Nepumuk
Geschrieben am: 17.01.2010 09:19:44

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


  

Betrifft: AW: freie Zahl generieren von: Josef Ehrensberger
Geschrieben am: 17.01.2010 09:21:42

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



  

Betrifft: AW: freie Zahl generieren von: Helge Kuehn
Geschrieben am: 17.01.2010 09:50:17

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 ?


  

Betrifft: AW: freie Zahl generieren von: Josef Ehrensberger
Geschrieben am: 17.01.2010 09:53:46

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



  

Betrifft: AW: kleine optimierung von: Daniel
Geschrieben am: 17.01.2010 17:48:02

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


Beiträge aus den Excel-Beispielen zum Thema "freie Zahl generieren"