Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Einträge nicht richtig sortiert

Forumthread: Einträge nicht richtig sortiert

Einträge nicht richtig sortiert
26.06.2003 19:03:37
Stony
Hi Leutz!!

Ich habe folgende Aufgabe:

Ich möchte mehrere User-Accounts verwalten..
Der Benutzername soll eindeutig sein, was heissen soll, das kein User-Name doppelt vorhanden sein darf.

Aufbau:

Alle User-Names sind in der Tabelle "User" von "A1" abwärts..
Zuerst wird der Vorname bei einem leeren User-Name-Feld verwendet.
Nun beginnt die Suche nach dem Namen..
Wenn der Name schon in der Tabelle vorhanden ist, soll
eine Zahl (angefangen bei "1") angehängt werden..
Neue Suche, usw..

Mein bisheriger Code:

Private Sub CommandButton1_Click()
prüfen
End Sub

Private Sub prüfen()
If txt_User.Text = "" Then
txt_User.Text = txt_Vorname.Text
End If
Dim i, a As Integer
Dim Name As String
i = 0
a = 1
Name = txt_User.Text
Do While Not Workbooks("gdb.xls").Sheets("User").Cells(i + 1, 1).Value = ""

If Workbooks("gdb.xls").Sheets("User").Cells(i + 1, 1).Value = Name Then
Name = Format(txt_User.Text & a, txt_User.Text & a)
a = a + 1

ElseIf (Workbooks("gdb.xls").Sheets("User").Cells(i + 1, 1).Value = Name) = False Then
i = i + 1
End If
Loop
txt_User.Text = Name
End Sub

Meine Beispieltabelle:

Stony
Stony0
Stony1
Stony10
Stony11
Stony12
Stony13
Stony14
Stony15
Stony16
Stony17
Stony18
Stony19
Stony2
Stony20
...

Wenn ich jetzt "Stony" vorschlagen lasse, sollte "Stony"-"Stony20" gefunden werden..
Das heisst, das "Stony21" noch frei wäre..
Aber bei mir gibt er mir ist "Stony10" frei..

Wenn ich die Tabelle mit von 1-9 durchlaufen lasse funktioniert es: ("Stony10")

Hoffe ihr könnt mir helfen..


mfg Stony



Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Einträge nicht richtig sortiert
26.06.2003 20:30:44
andre

hallo stony,
hier mal ein beispiel zum durchsuchen und zählen:
es wird allerdings nur die anzahl aller einträge eines namens (im beispiel in spalte a) beginnend mit andre gezählt, also andre, andre1, andre2 ...
ob alle zahlen da sind bzw. zwischendrin eine nummer fehlt bekommst du so nicht mit.

Sub Makro1()
'
' Makro1 Makro
' Makro am 26.06.2003 von wanderer aufgezeichnet
'
    Cells(1, 1).Activate

On Error GoTo errorhandler
    Range("A:A").Find(What:="andre", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
On Error GoTo 0
    i = 1

Do While ActiveCell.Row <= Cells(Rows.Count, 1).End(xlUp).Row
zelle = ActiveCell.Row
    Range("A:A").FindNext(After:=ActiveCell).Activate
    
If ActiveCell.Row < zelle Then
Exit Do
Else: i = i + 1
End If

Loop
MsgBox "aktive Zelle: " & zelle & " Anzahl: " & i
Exit Sub

errorhandler:
MsgBox "Nix gefunden"

End Sub 

     Code eingefügt mit Syntaxhighlighter 1.16


gruss andre


Anzeige
Re: Einträge nicht richtig sortiert
26.06.2003 23:35:24
Stony

Hi Andre,
Danke für deinen Eintrag.

Aber leider nicht das was ich suche..

Mein Problem ist,

Wenn Stony1, Stony2, Stony4, Stony10 vorhanden ist, soll der noch freie Name "Stony3" vorgeschlagen werden..

MfG Stony

Re: Einträge nicht richtig sortiert
27.06.2003 13:18:51
andre

hallo stony,
sind die daten sortiert?
gruss andre

Anzeige
Re: Einträge nicht richtig sortiert
27.06.2003 13:37:57
andre

hallo stony,
schau dir das mal an:

Sub Makro1()
'
' Makro1 Makro
' Makro am 26.06.2003 von wanderer aufgezeichnet
'
Dim gefunden(), ist%, max%, SucheNach$
Dim i%, j%

Cells(1, 1).Activate
SucheNach = "andre"
ReDim Preserve gefunden(0)

On Error GoTo errorhandler
    Range("A:A").Find(What:=SucheNach, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
On Error GoTo 0
    i = 1
    
Do While ActiveCell.Row <= Cells(Rows.Count, 1).End(xlUp).Row
    
    If ActiveCell.Value <> SucheNach Then
    ist = Right(ActiveCell.Value, Len(ActiveCell.Value) - Len(SucheNach))
    Else
    ist = 0
    End If
    If ist > UBound(gefunden) Then ReDim Preserve gefunden(ist)
    
    gefunden(ist) = ist

zelle = ActiveCell.Row
    Range("A:A").FindNext(After:=ActiveCell).Activate
    
If ActiveCell.Row < zelle Then
Exit Do
Else: i = i + 1
End If

Loop
For j = 0 To UBound(gefunden)
If gefunden(j) = "" Then Exit For
Next

MsgBox "aktive Zelle: " & zelle & " Anzahl: " & i & Chr(10) & _
" Erste freie: " & j & " Letzte belegte: " & UBound(gefunden)

Exit Sub

errorhandler:
MsgBox "Nix gefunden"

End Sub
 

     Code eingefügt mit Syntaxhighlighter 1.16

gruss andre

Anzeige
Re: Vielen Dank
27.06.2003 15:56:55
Stony

Hi Andre!!

Vielen Dank für deine Formel!! ;))

Funktioniert wunderbar und ist genau das was ich gesucht hab ;))

MfG Stony

;

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