Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1704to1708
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
Inhaltsverzeichnis

Mit Drehfeld nach unten/oben wandern

Mit Drehfeld nach unten/oben wandern
14.08.2019 17:21:05
Wolle
Hallo ihr Profis,
ich möchte gern ein Makro erstellen wie folgt:
Beim bestätigen eines Drehfeld (Formularsteuerelement) soll folgendes Ereignis passieren:
In der Spalte A stehen ca. 500 Vornamen untereinander.
Ich möchte gern beim betätigen eines "Drehfelds" zum nächsten Namen "Herbert"
in der Spalte A nach oben / unten wandern.
(Der Start des hoch und runter wandern soll die Zeile sein, wo der Curser gerade steht)
Kann mir dabei jemand helfen ?
Danke und Gruß
Wolle

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Herbert was, wer, wie, warum ? (owT)
14.08.2019 17:27:22
EtoPHG

AW: Herbert was, wer, wie, warum ? (owT)
14.08.2019 17:31:54
Wolle
Hallo EtoPHG,
es soll immer nur in der Spalte A in den Zellen die mit "Herbert" beschrieben sind,
zum nächsten "Herbert" nach oben /unten weiter gesprungen werden.
LG
Wolle
Variante mit Hyperlink
14.08.2019 17:55:02
{Boris}
Hi,
in D1 steht:
=ZELLE("row")+1
In E1:
=HYPERLINK("#A"&VERGLEICH("Herbert";INDEX(A:A;D$1):A10000;)+D$1-1;"zum nächsten Herbert")
Nach jedem Klick eben mit F9 neu berechnen (für ZELLE("row")) - und er springt dann immer zum nächsten.
VG, Boris
AW: Variante mit Hyperlink
14.08.2019 18:01:17
Wolle
Hallo Boris,
ich würde das Drehfeld doch lieber bevorzugen.
LG
Boris
Das ist doch Quatsch...
14.08.2019 20:23:41
EtoPHG
Wolle,
Sorry, aber warum soll dazu ein Drehfeld-Control vergewaltigt werden? Sieht geil aus oder was?
Und woher soll das Drehfeld wissen, dass du "Herbert" und nicht "Hubert" suchst?
Das geht mit der Standard Excel Suche und alle Fundstellen anzeigen schneller und dazu braucht es nix mehr. Keine Formel, kein VBA, kein Control, kein gar nix!
Gruess Hansueli
Anzeige
AW: Mit Drehfeld nach unten/oben wandern
14.08.2019 19:50:09
Wolle
Hallo Excel Spezialisten,
hat denn keine einer Idee wie ich das Makro erstellen kann?
AW: Mit Drehfeld nach unten/oben wandern
14.08.2019 20:45:16
Daniel
Hi
im Prinzip mit den beiden Befehlen:
Hochwandern:
ActiveCell.EntireColumn.Find(what:="Herbert", after:=ActiveCell, lookat:=xlWhole, searchdirection:=xlNext).Select
Runter wanderen:
ActiveCell.EntireColumn.Find(what:="Herbert", after:=ActiveCell, lookat:=xlWhole, searchdirection:=xlNext).Select
allerdings würde ich kein Drehfeld nehmen, sondern zwei normale Buttons.
der mitlaufende Zähler, der ja irgendwann auch an seine Grenze stößt, ist hier eher hinderlich.
Die Pfeile kannst du ja über die Schriftart entsprechen einfügen.
oder du schreibst die beiden Makros in ein allgemeines Modul, dann kannst du jedes beliebige Grafikelement als Button verwenden
Gruß Daniel
Anzeige
sorry, falsch kopiert
14.08.2019 20:47:09
Daniel
ich hab da ausversehen die gleiche Zeile 2x eingefügt.
unterschiedlich ist die SearchDirection:
für nach oben springen SearchDirection:=xlPrevious
für nach unten springen SearchDirection:=xlnext
der Rest ist gleich
Gruß Daniel
xlNext und xlPrevious
15.08.2019 07:04:51
lupo1
... als VBA-Excel-Konstanten lassen sich durch deren Werte ersetzen.
Dann kann das Hoch- oder Runterwandern in der Anweisung selbst entschieden werden, statt diese zweimal schreiben zu müssen.
AW: xlNext und xlPrevious
15.08.2019 07:15:11
Daniel
Interessant.
Kannst du mal ein Codebeispiel zeigen?
Gruß Daniel
AW: xlNext und xlPrevious
15.08.2019 07:15:12
Daniel
Interessant.
Kannst du mal ein Codebeispiel zeigen?
Gruß Daniel
Anzeige
ja
15.08.2019 07:33:47
lupo1
If boolPrevious Then
ActiveCell.EntireColumn.Find(what:="Herbert", after:=ActiveCell, lookat:=xlWhole, searchdirection:=xlPrevious).Select
Else
ActiveCell.EntireColumn.Find(what:="Herbert", after:=ActiveCell, lookat:=xlWhole, searchdirection:=xlNext).Select
würde dann mit https://docs.microsoft.com/de-de/office/vba/api/excel.xlsearchdirection --&gt xlNext = 1, xlPrevious = 2
kompaktiert zu
ActiveCell.EntireColumn.Find(what:="Herbert", after:=ActiveCell, lookat:=xlWhole, searchdirection:=(1 - boolPrevious)).Select
oder
ActiveCell.EntireColumn.Find(what:="Herbert", after:=ActiveCell, lookat:=xlWhole, searchdirection:=Iif(boolPrevious, 2, 1)).Select
Anzeige
AW: ja
15.08.2019 07:39:08
Daniel
Hi
Naja, das mit dem IIf funktioniert ja auch mit den Konstanten, durch deren Verwendung der Code deutlich leichter verständlich wird als mit den MagicNumbers.
Interessanter wäre die Frage, wie du das boolPrevious ermittelst.
Gruß Daniel
halt an der Stelle, an der Du Dich
15.08.2019 07:46:35
lupo1
... für Deine richtige Anweisung entscheidest. Ich kenne den notwendigen Code nicht.
AW: halt an der Stelle, an der Du Dich
15.08.2019 07:50:50
Daniel
Ich auch nicht.
Aber ich sehe noch keinen Vorteil darin, die VBA-Konstanten durch ihre Zahlenwerte zu ersetzen, eher Mehraufwand und den zusätzlichen Nachteil, dass nicht mehr im Klartext dasteht, ob nach oben oder nach unten gesucht wird.
Gruß Daniel
Anzeige
Geschmackssache
15.08.2019 07:55:07
lupo1
Ich mag eine lange Anweisung, wo es geht, lieber nur einmal schreiben.
Zugegeben: Vermutlich hängen Previous und Next an zwei verschiedenen Events (z.B. Schaltflächen). Dann wird die Sache "eine statt zwei gleicher Anwendungen" aufgrund eines weiteren notwendigen Calls so tüdelig, dass man lieber die Anweisung zweimal schreibt.
AW: Geschmackssache
15.08.2019 08:21:40
Daniel
Richtig erkannt, jetzt weißt du, warum mein Lösungsvorschlag so ist, wie er ist.
Sollte für die Suche an sich nicht nur eine, sondern mehrere Vodezeilen erforderlich sein, dann wäre es natürlich sinnvoll, den Code nur einmal hinzuschreiben und die Suchrichtung Variabel zu machen.
Aber das geht dann nicht dadurch, dass man die Konstanten durch ihre Zahlenwerte ersetzt, sondern in dem man die Suche in eine eigene Sub oder Function auslagert und die Duchreictung als Parameter über gibt:
Sub NächstesElement(Suchrichtung as Long)
...Find(..., Searchdirection:=Suchrichtung,...).select
End Sub
Und in den beiden Eventmakros dann
call NächstesElement(xlNext)
Call NächstesElement(xlPrevious)
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige