Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
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
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

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.
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige