Makro für die Positionierung eines Objektes

Hallo Miteinander!

Ich habe mir von chatGPT helfen lassen, weil ich noch nicht so viel Ahnung habe. Habe schon viel korrigiert und probiert, aber es will einfach nicht funktionieren!! Folgendes: Wir sind in Impress. Ein bestehendes Objekt “Figur” soll auf der ersten Folie an die Position x,y gesetzt werden (die Werte stehen im Code) wobei die Position abhängig davon ist, welcher Wochentag gerade ist.

Jaha. Hier nun der Code

REM ***** BASIC *****Sub Main
   Sub PositioniereFigur()
        MsgBox "Das Makro wird ausgeführt!"
        Dim o As Object
        Dim oSlide As Object
        Dim oShape As Object
        Dim oDate As New com.sun.star.util.Date
        Dim nWeekday As Integer

        Doc = ThisComponent
        oSlide = Doc.CurrentController.getCurrentPage()

        ' Aktuelles Datum rufen
        oDate.Year = Year(Now())
        oDate.Month = Month(Now())
        oDate.Day = Day(Now())

MsgBox "Aktuelles Datum"

        ' Wochentag des aktuellen Datums abrufen (1=Sonntag, 2=Montag, usw.)
        nWeekday = Weekday(oDate.Day, 2)

MsgBox "Wochentag"

		 ' Figur-Objekt auf der Folie suchen und positionieren
        For i = 0 To oSlide.Count - 1
                    If oSlide(i).Name = "Figur" Then
                        Select Case nWeekday
                           Case 1 ' Sonntag
          						oSlide(i).Position.X = 10 ' Neue X-Position für Sonntag einfügen
            					oSlide(i).Position.Y = 10 ' Neue Y-Position für Sonntag einfügen
                            Case 2 ' Montag
          						oSlide(i).Position.X = 20 ' Neue X-Position für Sonntag einfügen
            					oSlide(i).Position.Y = 20 ' Neue Y-Position für Sonntag einfügen
                            Case 3 ' Dienstag
          						oSlide(i).Position.X = 30 ' Neue X-Position für Sonntag einfügen
            					oSlide(i).Position.Y = 30 ' Neue Y-Position für Sonntag einfügen
							Case 4 ' Mittwoch
          						oSlide(i).Position.X = 40 ' Neue X-Position für Sonntag einfügen
            					oSlide(i).Position.Y = 40 ' Neue Y-Position für Sonntag einfügen
                            Case 5 ' Donnerstag
          						oSlide(i).Position.X = 25 ' Neue X-Position für Sonntag einfügen
            					oSlide(i).Position.Y = 25 ' Neue Y-Position für Sonntag einfügen
                            Case 6 ' Freitag
          						oSlide(i).Position.X = 6 ' Neue X-Position für Sonntag einfügen
            					oSlide(i).Position.Y = 6 ' Neue Y-Position für Sonntag einfügen
                            Case 7 ' Samstag
          						oSlide(i).Position.X = 37 ' Neue X-Position für Sonntag einfügen
            					oSlide(i).Position.Y = 37 ' Neue Y-Position für Sonntag einfügen

              End Select
                End If
                    Next i
MsgBox "Ende"
End Sub

Der Code befindet sich in “Meine Makros und Dialoge” - Standard - Module 1.
Die MsgBoxen sind für mich zum Checken ob der Spaß überhaupt ausgeführt wird.
Die MessageBoxen poppen auf, aber die verdammte Figur bewegt sich keinen Millimeter von der Stelle! Ich habe den Makro sowohl im Editor laufen lassen, als auch über Extras - Makros ausführen … Und ich habe ausprobiert die Figur per Interaktionsmenü das Makro zuzuweisen und per Mausklick ausführen zu lassen. Aber hilft alles nüx.

Freu mich auf eure Ideen und Ratschläge.
Krenerta

Sub move_shape()
Dim pos As New com.sun.star.awt.Point

	doc = ThisComponent
    slide = doc.CurrentController.CurrentPage
    
    For Each shape In slide
    	If shape.Name = "Figur" Then
    		Select Case WeekDay(Now())
    			Case 1
	  				pos.X = 100
    				pos.Y = 100    			
				Case 6
	  				pos.X = 600
    				pos.Y = 600
				Case 7
	  				pos.X = 370
    				pos.Y = 370
    		End Select
    		
    		shape.Position = pos
    		
    		Exit For
    	End if
    Next 
    
End Sub

Elmau, vielen Dank! Dein Code funktioniert. Wenn ich den chatGPT-Code mit deinem vergleiche, sieht deiner wesentlich einfacher und richtiger aus.

Hier noch eine Anmerkung für Noobs wie mich, die den Code verwenden wollen:
Wenn ich die Figur auf Position X = 50 auf der Folie haben will, schreibe ich im Code

pos.X = 5000

image Am unteren Bildschirmrand sieht man die Koordinatenangaben.