Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
272to276
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
272to276
272to276
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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



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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige