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