Hallo Günter,
du solltest nicht so sehr auf den Macro Recorder setzen, er hat enge
Grenzen. Arbeite dich lieber in die Objekte selbst ein. Unerlässlich
dafür ist, wie schon mal gesagt, ein Werkzeug wie Xray. Da kann man ein
bisschen herumsuchen, bis man etwas Vielversprechendes findet, und das
dann in Testprogrammen ausprobieren.
Beim folgenden Programm ist der einzige wirkliche Dreh der Einstieg über
CurrentController.ActiveSheet, weil man vom Dokument aus zunächst auf
Drawpages stößt, das enthält aber für jedes Sheet eine Drawpage, und man
kann nicht direkt ablesen, welche die gewünschte ist, weil die Drawpages
automatisch angelegt werden, wenn man ein grafisches Objekt oder ein
Kontrollelement einfügt, und sie daher auch keinen erkennbaren Namen
haben. Und die zweite kleine Hürde ist, dass die Elemente der Drawpage
in unserem Fall erst mal grafische Objekte sind, die das eigentliche
Kontrollelement erst tragen, daher der Weg über .Control, um den Namen
zu vergleichen; aber sowas findet man nach kurzem Rumsuchen schnell.
dim oDoc as object
dim DrawPage as object, i as long, ctrl as object
dim tempPos as New com.sun.star.awt.Point 'wenn man das nicht weiß,
geht es auch mit variant
oDoc = ThisComponent
DrawPage = oDoc.CurrentController.ActiveSheet.Drawpage
for i = 0 to DrawPage.Count - 1
ctrl = Drawpage.getByIndex(i)
if ctrl.Control.Name = "Push Button 1" then ' wie immer deine
Schaltfläche heißt
tempPos = ctrl.Position 'die Verwendung einer
Zwischenvariablen ist bei structs wie Position, Size normalerweise
'notwendig, die
direkte Zuweisung auf X und Y funktioniert normalerweise nicht.
tempPos.X = tempPos.X * 1.5 'das nur als Beispiel
tempPos.Y = tempPos.Y * 1.5
ctrl.Position = tempPos
end if
next
Die Verschiebung der Schaltfläche auf das Anderthalbfache ihrer Abstände
zu links und oben ist bloß ein Beispiel, weil ich mich nicht mit den
dort verwendeten Enheiten rumschlagen will. Da musst du etwas probieren,
wo der gewünschte Ort liegt.
Herzlichen Gruß
Gerhard
Am 07.11.2016 um 15:40 schrieb Günter Fritze:
Hallo,
Ich habe in einer Zelle eine viereckige Schaltfläche erstellt. Wenn
ich diese Schaltfläche an einen anderen Ort verschieben möchte, dann
ist in der Makro-Programmieranleitung genau beschrieben, wie man das
macht:
1. Schaltfläche mit der rechten Maustaste markieren und an den neuen
Standort plazieren.
Das funktioniert also. Diese Aktion mit Makroaufzeichnung wiederholen,
Makro abspeichern und starten, was passiert? Nichts.
2. Schaltfläche markieren, mit Ctrl-X oder rechter Maustaste löschen,
an neuem Platz mit 'Einfügen' oder Ctrl-V plazieren. Funktioniert
also. Die gleiche Aktion mit Makroaufzeichnung wiederholen,
Abspeichern und Starten. Was passiert? Die Schaltfläche wird an die
neue Stelle kopiert, aber nicht an der Quelle gelöscht.
Kann man solche Tastenbedienungen in einem Makro programmieren?
Für eine Antwort wäre ich dankbar
Mit freundlichen Grüßen
Günter
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.