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

Forumthread: VBA Wert alphabetisch zuordnen

VBA Wert alphabetisch zuordnen
09.05.2020 19:59:33
Marian
Hallo!
ich würde gerne per InputBox einen Namen eingeben. Dieser Name wird dann in Spalte 3 ab Zelle 5 mit den Werten in den Zeilen nacheinander verglichen. Liegt der Name weiter hinten im Alphabet soll die nächste Zelle verglichen werden.
Sobald der Text in Zelle weiter hinten im Alphabet liegt soll die Zelle aktiviert werden, ab da kommt dann ein Makro ins Spiel, das dort eine neue Zeile einfügt, dieses Makro habe ich schon.
Wenn kein Wert weiter hinten im Alphabet liegt soll die letzte Zelle mit Inhalt markiert werden.
Ich habe schon viel rumgesucht, sobald man irgendwas mit alphabetisch eingibt, geht es leider immer ums Sortieren.
Hier ein erster Anfang, der nicht funktioniert, mir ist auch bewusst warum, nur leider weiß ich nicht wie man das eingibt.
"Größer als" funktioniert bei Buchstaben leider nicht.

Sub Test()
Dim i As Integer
Dim strEingabe As String
strEingabe = InputBox("Namen eingeben")
For i = 5 To Range("C1999")
If strEingabe > Range("C" & i) Then
Range("C" & i).Activate
'Ab hier kommt das andere Makro
End If
Next
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Wert alphabetisch zuordnen
09.05.2020 20:47:42
Werner
Hallo,
also ehrlich gesat habe ich keine Ahnung was du da vor hast.
Bei unterem Makro wird der ASC-Code des ersten Zeichens das du in die Inputbox eingibst mit dem ersten Zeichen der Zeichenkette, die in Spalte C steht.
Sub Schaltfläche1_Klicken()
Dim i As Long, loEingabe As Long
On Error Resume Next
loEingabe = Asc(UCase(Left(InputBox("Namen eingeben"), 1)))
If Err.Number = 5 Then
On Error GoTo 0
Exit Sub
End If
With Worksheets("Tabelle1") 'Blattname anpassen
For i = 5 To .Cells(.Rows.Count, "C").End(xlUp).Row
If loEingabe > UCase(Left(.Cells(i, "C"), 1)) Then
.Cells(i, "C").Activate
'Ab hier kommt das andere Makro
End If
Next
End With
End Sub
Gruß Werner
Anzeige
AW: VBA Wert alphabetisch zuordnen
09.05.2020 21:35:26
Marian
Hallo Werner,
danke für die Hilfe. Leider springt das Makro nicht ganz zur richtigen Stelle. Hier nochmal eine Erklärung:
In Spalte 3 ab Zeile 5 stehe verschiedene Markennamen.
Ich möchte, dass das Makro erkennt wo eine neue Zeile eingefügt werden soll, so dass die alphabetische Anordnung danach noch stimmt.
Es soll also der komplette Text der Eingabe mit jedem Wert ab Zeile 5 verglichen werden. Sobald die Eingabe im Alphabet weiter hinten liegt, soll die letze Zelle markiert werden, die noch vorher im Alphabet liegt.
Ich hoffe das war einigermaßen gut erklärt.
Eine Sache hatte ich vergessen zu erwähnen: Am Anfang können auch zahlen stehen, diese sind vor "A" im Alphabet angeordnet, fängt die Eingabe also mit einer Zahl an soll sie bei den Zahlen vor "A" richtig eingeordnet werden.
Anzeige
AW: VBA Wert alphabetisch zuordnen
09.05.2020 22:15:35
Werner
Hallo,
sorry, aber was soll das Ganze denn? Warum willst du die Sortierfunktion von Excel nachbauen?
Trag deine Daten am Ende deiner Liste ein und sortier anschließend deine Liste.
Gruß Werner
AW: VBA Wert alphabetisch zuordnen
09.05.2020 22:55:04
Marian
Hallo Werner,
es gibt einige Einträge doppelt. In den anderen Spalten stehen dann verschiedene Werte, die nach keinem Muster sortiert angeordnet. Sobald man auf Sortieren klickt, sortiert Excel automatisch diese Zellen auch.
Anzeige
Quatsch
09.05.2020 23:24:21
Werner
Hallo,
wenn du nur die Daten in Spalte C markierst und dann auf Sortieren gehst, dann fragt dich Excel doch, ob du die Markierung erweitern willst, oder ob du mit der bestehenden Markierung fortfahren willst. Im Falle von "mit bestehender Markierung fortfahren" wird dann auch nur die Spalte C sortiert und sonst nix.
Hier das Ganze mal als Makro (Excel Sortierfunktion):
Sub Makro1()
Dim loLetzte As Long, strEintrag As String
Application.ScreenUpdating = False
strEintrag = InputBox("Bitte Name eingeben.", "Neuer Name")
If strEintrag = vbNullString Then Exit Sub
'Blattname anpassen
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, "C").End(xlUp).Offset(1).Row
If .Cells(5, "C") = "" Then loLetzte = 5
.Cells(loLetzte, "C") = strEintrag
loLetzte = .Cells(.Rows.Count, "C").End(xlUp).Row
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range("C5:C" & loLetzte), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("C5:C" & loLetzte)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
End With
End Sub
Gruß Werner
Anzeige
Rückmeldung ist wohl ein Frendwort? o.w.T.
14.05.2020 06:56:31
Werner
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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