VBA: Cursorposition in Zelle
Wunderschönen Guten Morgen!
Leider benötige ich schon wieder die Hilfe der Excel-Experten.
Problemstellung:
Während der Eingabe in einer
Zelle soll per Makro ein(e) bestimmte(s) Zeichen/Zeichenkette am bestehenden Text angefügt werden.
Danach soll sich der Cursor hinter den soeben eingefügten
Text positionieren.
Eine Musterdatei habe ich unter
http://www.file-upload.net/download-1793484/Cursorposition_Muster01...abgelegt.
LieGrü
Tom
Antwort schreiben
Antwort 1 von coros vom 28.07.2021, 07:43 Options
Hallo Tom,
das was Du vor hast, geht nicht. Es kann nicht während einer Eingabe ein Makro ausgeführt werden. Vor einer Eingabe oder erst wenn Die Eingabe beendet ist, kann ein Makro ausgeführt werden.
Für eine eventuelle andere Lösung müsste man mehr von dem Wissen, was Du vorhast. Ist die Anzahl der Zeichen vor dem Zusatztext immer gleich oder kann man an irgend einer Texttrennung ausmachen, an welcher Stelle der Zusatztext eingefügt werden soll?
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von Tomschi vom 28.07.2021, 09:06 Options
Hallo Oliver!
Ist wohl schwieriger als von mir gedacht, hm.
Es geht mir darum, dass man während der Eingabe in eine Zelle
EIN Zeichen einfügt und danach der Cursor nach diesem Zeichen steht.
Leider kann nicht genau gesagt werden wieviele Zeichen davor stehen.
Texterkennung = negativ.
Ich habe auch schon versucht die Zelle zu verlassen, das Zeichen einzufügen und danach wieder auf die ursprüngliche Zelle zu wechseln.
Aber wie Du schon erwähnt hast, wurde das Makro nie ausgeführt.
Ciao
Tom
Antwort 3 von coros vom 28.07.2021, 09:51 Options
Hallo Tom,
wenn es Dir genügt, das was Du vor hast nach dem Betätigen der Entertaste möglich ist, dann schau Dir mal die Beispieldatei, die ich Dir erstellt und unter
http://www.excelbeispiele.de/Beispiele_Supportnet/Beispiel_Tomschi.xls abgelegt habe an.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von Tomschi vom 28.07.2021, 10:15 Options
Hallo Oliver!
Danke für die Mühe!
So ganz bin ich damit nicht zufrieden. --> Leider funktioniert das
Anhängen in einer
aktive Zelle nicht. Wird - wie Du schon geschrieben hast - wahrscheinlich auch nicht gehen.
Warum muss das markieren (Stichwort Entertaste) deaktiert werden?
Ich habe nunmehr meine ursprünglichen Code um
Application.SendKeys "{F2}"
erweitert.
Sub Zusatztext_einfügen()
Position = ActiveCell.Address
var01 = ActiveCell.Value
Dim var02 As Variant
var02 = Sheets(1).Range("b1")
Range(Position) = var01 & var02
Application.SendKeys "{F2}"
End Sub
Liefert zwar immer noch nicht das gewünschte Ergebnis aber einen Schritt bin ich schon weiter.
Anmerkung:
Unter
http://www.supportnet.de/t/2249591 hatte ich eine ähnliche Fragestellung, aber hierbei handelte es sich um eine Textbox in einem Userform.
Nunmehr möchte ich eben die selbe Fragestellung für eine Zelle lösen.
Ciao
Tom
Antwort 5 von coros vom 28.07.2021, 10:52 Options
Hallo Tom,
in der Beispieldatei, funktioniert es. Ansonsten hätte ich die nicht hochgeladen für Dich.
Die Funktion, dass beim Betätigen der Entertaste die Nachbarzelle aktiviert wird, muss deshalb deaktiviert werden, damit nachdem die Eingabe in der Zelle durch die Entertatse beendet wurde, nicht die Nachbarzelle aktiviert wird, sondern die aktive Zelle die Eingabezelle bleibt. Wenn Du dann in der Beispieldatei auf den Button klickst, wird Dir der Text aus Zelle A1 angehängt und der Cursor befindet sich an der letzten Stelle und Du kannst sofort weiterschreiben.
Was funktioniert daran nun bei Dir nicht?
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von Tomschi vom 28.07.2021, 12:31 Options
Mahlzeit!
Sorry, war mein Fehler.
Habe wohl Deine Beschreibung in der Datei nicht richtig gelesen.
--> schreiben --> Enter --> Button = Cursor --> weiter schreiben
Ich war felsenfest davon überzeugt, Du hättest doch eine 100%ige Lösung für mich und ich könnte gleich während der Eingabe den Button zum Einfügen des Textes drücken.
Das war wohl ein Missverständnis meinerseits.
In Deiner Lösung muss ich jedoch noch
Private Sub Workbook_Activate()
und
Private Sub Workbook_Deactivate()
mit
Application.MoveAfterReturn = True
bzw.
Application.MoveAfterReturn = False
einbauen.
Ansonsten fuktioniert die Entertaste beim Wechseln in ein anderes
Blatt nicht.
Ich habe Deiner Antwort 1 "Als gute Antwort bewerten" gewertet.
Entschuldige nochmals mein "Drüberlesen".
Tom
Antwort 7 von coros vom 28.07.2021, 12:44 Options
Hallo Tom,
wie bereits geschrieben, ein Makro während einer Eingabe ausführen zu lassen geht nicht, weil es dafür kein Ereignis gibt, dass, anders als z.B. bei TextBoxen, ausgelöst wird, über dass dann ein Makro gestartet werden kann. Es gibt dort halt nur das Change()- oder Selection_Change()-Ereignis, das mit der Zelle in Zusammenhang gebracht werden kann. Aber das eine ist eben vor und das andere Ereignis nach der Eingabe, aber nicht während der Eingabe.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 8 von Tomschi vom 28.07.2021, 15:23 Options
Hallo Oliver!
Zitat:
...
Aber das eine ist eben vor und das andere Ereignis nach der Eingabe, aber nicht während der Eingabe.
Schade, da kann man halt nichts machen.
Vielleicht geht es ja in Office2010 (oder später).
DANKE nochmals für Deine Unterstützung!
Tom
Antwort 9 von fedjo vom 31.07.2021, 19:55 Options
Hallo Tom,
vielleicht hilft dir die
Musterdatei weiter.
Daten eingeben und dann die Pfeiltaste nach rechts drücken.
Gruß
fedjo
Antwort 10 von Tomschi vom 03.08.2021, 14:08 Options
Hi fedjo!
Sieht toll aus.
Kann man den Code so verändern, dass z. B.
Der "Einfügtext" auch mehrmals automatisiert
eingegeben wird?
Ein Problem besteht noch.
Leider habe ich am WE gesehen, dass es unterschiedliche
"Textbausteine" geben kann.
Wollte ursprünglich morgen mein "Gesamtkunstwerk" posten,
aber jetzt ist wieder etwas dazwischen gekommen.
Wird sich für morgen nicht ausgehen. :-(
Thanx!
Tom
Antwort 11 von fedjo vom 03.08.2021, 16:51 Options
Hallo Tom,
Zitat:
Kann man den Code so verändern, dass z. B.
Der "Einfügtext" auch mehrmals automatisiert
eingegeben wird?
So ganz verstehe ich die Frage nicht.
Soll der gleiche Einfügtext mehrmals hintereinander eingefügt werden? Oder gibt es verschiedene Einfügtexte die gleichzeitig eingefügt werden sollen?
Gruß
fedjo
Antwort 12 von Tomschi vom 04.08.2021, 07:10 Options
Guten Morgen fedjo!
Sorry, für meine unklare Ausdrucksweise.
*) Es kann vorkommen, dass ein und der selbe Text mehrmals eingefügt werden muss.
fiktives Beispiel:
123-TEXT01-456-TEXT01-789
*) In der Regel kommen mehrere verschiedene "Einfügetexte" zu tragen.
fiktives Beispiel:
123-TEXT01-456-TEXT02-789-TEXT03
Mehrmals hintereinander ist eher unwahrscheinlich.
Eventuell kommt es aber zu folger Situation.
fiktives Beispiel:
123-TEXT01-TEXT02-456-TEXT03 bzw.
123-TEXT01-TEXT02-TEXT03-456
Ciao
Tom
Antwort 13 von fedjo vom 04.08.2021, 16:51 Options
Hallo Tom,
habe die Tabelle ein wenig erweitert,
mit den SendKeys "{Left/Right/Up}" für die Einfügtexte.
Es ist auch möglich die Einfügtexte öfter hintereinander einzugeben.
Gruß
fedjo
Muster
Antwort 14 von Tomschi vom 05.08.2021, 07:05 Options
Wunderschönen Guten Morgen fedjo!
Danke für Deine zahlreichen Tipps!
Leider immer noch nicht ganz das, was meiner Anforderung
entspricht. Es können mehr als drei "Einfügetexte" vorkommen.
Daher werde ich mit den Cursortasten so nicht auskommen.
Trotzem bin ich Dir für Deinen Vorschlag sehr dankbar.
Im Moment sind es bereits zehn und diese können sich im Laufe der Zeit noch erhöhen.
Ich habe nunmehr mein "Gesamtkunstwerk" fast fertig und noch eine Frage zum Thema "Userform: Zufallsgenerator" dazu.
siehe
http://www.supportnet.de/t/2253615Dort sieht man die von mir angesprochenen zehn "Einfügetexte".
Vielleicht ist es so ein wenig klarer.
Ciao
Tom