Seite 1 von 1

Makro Probleme

Verfasst: So 22. Aug 2021, 23:41
von BecksTown
Guten Abend Community,

ich habe folgenes Problem:

Ich habe ein LO Calc Projekt bestehend aus 8 Tabellen. Auf der 6 Tabelle habe ich ein Button erstellt der auf Befehl
folgenes ausführen soll:

Nachdem Textinhalte in ausgewählten Zellbereichen in Tabellen 5,4,3 nacheinander gelöscht werden sollen, möchte ich auf
Tabelle 3 in einer bestimmten Zelle enden. Ich habe folgenes Makro aufgezeichnet:




REM ***** BASIC *****


sub TEST
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$I$25:$AF$40"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Nr"
args3(0).Value = 4

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$I$25:$AJ$40"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Nr"
args6(0).Value = 3

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$I$25:$AF$40"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "ToPoint"
args9(0).Value = "$I$25"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9())


end sub


Durch betätigen des Buttons wird dieses Makro ausgeführt, nur stört es mich, dass jede tabelle einzeln kurz eingeblendet wird. Ist es möglich die "lösch" funktion zu behalten und nur das ein Tabellensprung von tabelle 6 zu Tabelle 3 zu sehen ist ?
Ich hoffe ich konnte das Problem relativ gut erklären und über ein Tipp würde ich mich freuen.

Beste Grüße BecksTown

Re: Makro Probleme

Verfasst: Mo 23. Aug 2021, 11:03
von mikele
Hallo,
deine Frage wäre im Forum "Programmierung" besser aufgehoben.
Dein Wunsch kann erfüllt werden, allerdings ohne den Dispatcher (Makroaufzeichnung).

Code: Alles auswählen

Sub Main
	oDoc=ThisComponent
	oDoc.Sheets(2).getCellRangeByName("$I$25:$AF$40").ClearContents(1+2+4) 
	'1 ... Werte
	'2 ... Datum
	'4 ... Text
	'16 ... Formel
	oDoc.Sheets(3).getCellRangeByName("$I$25:$AJ$40").ClearContents(1+2+4) 	
	oDoc.Sheets(4).getCellRangeByName("$I$25:$AF$40").ClearContents(1+2+4)
 	oDoc.CurrentController.setActiveSheet(oDoc.Sheets(2))
End Sub
Beachte, dass die Zählung der Tabellen bei 0 beginnt.

Re: Makro Probleme

Verfasst: Mo 23. Aug 2021, 11:58
von BecksTown
Vielen Dank für die schnelle Hilfe. Stimmt das es in der "Programmierung" besser aufgehoben wäre :D
Eine kurze frage habe ich noch: wie müsste ich die letze zeile schreiben, wenn ich in einer bestimmten Zelle enden möchte ?


beste grüße

Re: Makro Probleme

Verfasst: Mo 23. Aug 2021, 13:39
von karolus
Hallo
Eine kurze frage habe ich noch: wie müsste ich die letze zeile schreiben, wenn ich in einer bestimmten Zelle enden möchte ?
Das musst du nicht ins Makro schreiben, setze die Schaltfläche nochmal in den Entwurfsmodus und …
→Rechtsklick auf Schaltfläche→Steuerelement… im Reiter Allgemein wählst du im Dropdown Aktion: Dokument/Webseite öffnen
und im Textfeld URL direkt darunter trägst du die gewünschte Adresse ein zb. in der Form #Tabelle3.F27

Re: Makro Probleme

Verfasst: Mo 23. Aug 2021, 13:52
von BecksTown
Guten Tag,

ich habe es wie von ihnen beschrieben gemacht und bekomme eine fehler meldung "ungültiger bereich"

Da ja die 1. tabelle ja die "0" trägt wäre die 3. tabelle ja die "2" richtig ?

die zelle wäre I25:I28, weil die zelle verbunden wurden. Im URL feld hatte ich folgene einträge gemacht:

#Tabelle2.I25
und
#Tabelle2.I25:I28


wo steckt die fehlerquelle ? :D


beste grüße

Re: Makro Probleme

Verfasst: Mo 23. Aug 2021, 15:46
von karolus
Hallo
Da ja die 1. tabelle ja die "0" trägt wäre die 3. tabelle ja die "2" richtig ?
FALSCH … im Makro war das per Indexzugriff… Hier musst du hinter dem #-zeichen die vollständige Zelladresse eintragen,
in der Form Tabellenname.Zelladresse

Re: Makro Probleme

Verfasst: Mo 23. Aug 2021, 16:58
von BecksTown
hat geklappt. Besten dank