Makro: Kopiermodus ausschalten

Hallo,

ich habe diese Frage bereits in einem anderen Forum gestellt, dort leider keine Antwort erhalten.
Deshalb dieses Crossposting.

Zuerst makiere ich eine Zelle oder einen Zellbereich, kopiere per STRG-c den Inhalt in die Zwischenablage.
Dann soll der Basic-Code nur die Werte (keine Formate, etc.) in den Ziel-Bereich schreiben. Dazu habe ich mir per Makrorekorder einen Code aufgezeichnet.
Nachdem der Code ausgeführt wurde, bleibt der Quellbereich unter LO weiterhin im Kopiermodus.
Diesen möchte ich auch per Code abschalten, so als würden man die Taste ESC drücken.

Ich habe bereits mit MRI nach geeigneten Eigenschaften und Methoden durchsucht, finde aber keine passende Aktion.

Kennt jemand eine Möglichkeit den Kopiermodus per Basic-Code auszuschalten?

Gruß

Craig

PS
Wie füge ich in diesem Forum den Code formatiert ein?
Wenn ich auf das Symbol 101010 klicke erscheint der Text “enter code here”, allerdings wird mir
immer nur die erste Zeile “Sub Main” blau hinterlegt angezeigt. Alles andere erscheint ohne
ohne Zeilenumbruch wild durcheinander.

Nur zur Zusatzfrage:
Eine Leerzeile voraus und vier Leerzeichen am Zeilenanfang machen eine Zeile zur ‘Line of Code’. Sukzessive Zeilen dieser Art werden zusammengefasst. Die Leerzeichen kann man über die Tastatur eingeben. Man kann auch einen Textblock (Zeilenschaltungen enthalten!) selektieren, und danach das von dir erwähnte Werkzeug benutzen.

Hier ist ein Beipiel mit einer langen Zeile
und einer kurzen,
nachträglich als Codeblock formatiert.

Danach kommt wieder gewöhnlicher Text.

Und jetzt eine Zeile, bei der ich direkt 4 Leerzeichen vorangestellt habe.  

Dabei muss vor dem Code eine ganz leere Zeile kommen.
Klar?

== Zur Nachfrage ==
So Sachen wie dieses Ameisengewimmel interessieren mich eigentlich nicht. Wenn schon ein “Makro” unbedingt sein muss, dann erledige eine Aufgabe ganz damit. Eine sehr rohe Sub könnte so gehen (Sheets(1) ist das zweite Rechenblatt.):
Ich habe den Codeblock wieder weggenommen. Er bringt’s nicht.

Hallo Craig,

ich fürchte, das wird so einfach gar nicht gehen. Solange Du auf der Oberfläche arbeitest, werden die Darstellungen (also z.B. der Rahmen um den kopierten Bereich) vom Programmkern gesteuert (also sogesehen dem c-Code von LibreOffice). Dieser Prozess ist aber unabhängig von einem evtuellen Makroprozess bzw. der Makroprozess kann diesen weder stoppen noch verändern.

Makros erhalten ihren eigenen Prozess und laufen unabhängig davon ab. Selbst wenn Du per Makro andere Zellen selektierst, etwas hineinschreibst oder sonst etwas anstellst - das alles ändert am ursprünglichen Prozess wenig.

Ohne Dein Ziel genau zu kennen würde ich Dir empfehlen, alles per Makro zu lösen - etwa so: Zellbereich markieren - Makro starten - Makro fragt den Zielbereich ab - wird durch markieren gesetzt - Makro fügt die Werte (ohne Formeln) im Zielbereich ein. Das alles geht sicher nicht mit dem Makrorekorder - da musst Du dann schon “richtig” programmieren - das Makro wird dadurch natürlich deutlich länger. Der Dispatchercode (Rekorder) übernimmt ja nur die Funktionen der Icons oder Menübefehle und startet diese sozusagen.

Also sorry - schätze hier gibt es keine einfache Lösung.

VG Tom

Hallo Lupp,

OK!

                                Vielen Dank für Deine Antwort!

           Hast Du irgendeine Idee zum Abschalten des Kopiermodus (Cut'nCopy Mode)?

Gruß

Craig

════════════════════════════════════════════════════════════════════

Hallo Tom,

danke für Deine Ausführungen.

Egal ob ich mit dem Dispatcher arbeite oder einem selbst geschriebenen Basic-Code, die Problematik mit dem Kopiermodus bleibt bestehen.

Ich dachte mir nun nach mehreren erfolglosen Versuchen eine Lösung zu finden, dass eine höhere Instanz von LO für dieses Verhalten verantwortlich sein muss und puschte deshalb meine Frage.
Das mit der höheren Instanz wurde mir nun von Dir bestätigt. Ich dachte immer die höchste Instanz sei der „Stardesktop“ Trifft wohl nur für den reinen Basic-Code zu.

Nun mein Ziel ist denkbar einfach:

Die markierte Zelle in einer langen Liste von Berechnungen muss mit STRG+c kopiert werden und dann soll das reine Datum(Value) in eine andere Zelle, in eine Einfachauswahl oder eine Mehrfachauswahl von Zellen kopiert werden.
Je nach Anforderung.

Das Problem welches jetzt besteht ist, dass ich keinen Keyhandler der die Entertaste simuliert verwenden kann, da ja sonst alles aus der Quellzelle kopiert wird. Allerdings würde der Kopiermodus hiermit beendet.
Ein Programmierversuch die ESC-Taste zum Beenden des Kopiermodus ist fehlgeschlagen, da die Quellzelle erst wieder aktiv ist, wenn ich mit der Maus in die Quellzelle klicke. Alle Versuche die Zelle per Code auf aktiv zusetzen, sind bei mir fehlgeschlagen. ESC bleibt wirkungslos.

Ja, man könnte den Kopiervorgang auch programmieren, z.B. Wert in Variable, dann bleibt einem aber keine Zeit mehr, den neuen Zielbereich zu wählen!

Oder: Code pausieren und einen Mouse-Listener dazwischen schalten. z.B. “Markierung erfolgt” wird durch Rechtsklick signalisiert! Fällt mir gerade mal so ein:-)

Naja, werde mal drauf los tippen.
Sobald ich eine Lösung zur Umgehung des Problems gefunden habe, werde ich den Code hier posten.

Gruß

Craig