Frage stellen
0

Makro: Kopiermodus ausschalten

gefragt 2016-05-26 15:31:31 +0200

Craig22 Gravatar-Bild

updated 2016-09-09 18:44:05 +0200

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.

Bearbeiten Tags ändern Melden schließen vereinen löschen

3 Antworten

1

geantwortet 2016-09-09 19:02:41 +0200

Lupp Gravatar-Bild

updated 2016-09-10 01:35:46 +0200

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.

Bearbeiten Melden löschen Link mehr
1

geantwortet 2016-09-09 20:20:53 +0200

Toxitom Gravatar-Bild

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

Bearbeiten Melden löschen Link mehr
0

geantwortet 2016-09-09 20:37:17 +0200

Craig22 Gravatar-Bild

updated 2016-09-09 21:47:12 +0200

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

Bearbeiten Melden löschen Link mehr
Registrieren oder einloggen, um zu antworten

Antwortwerkzeuge

1 Beobachter

Statistik

Gefragt: 2016-05-26 15:31:31 +0200

Angesehen: 107 Mal

Aktualisiert: Sep 10 '16