🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro Probleme

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
BecksTown
Beiträge: 8
Registriert: So 22. Aug 2021, 22:56

Makro Probleme

Beitrag von BecksTown » So 22. Aug 2021, 23:41

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

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Makro Probleme

Beitrag von mikele » Mo 23. Aug 2021, 11:03

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.
Gruß,
mikele

BecksTown
Beiträge: 8
Registriert: So 22. Aug 2021, 22:56

Re: Makro Probleme

Beitrag von BecksTown » Mo 23. Aug 2021, 11:58

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

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Makro Probleme

Beitrag von karolus » Mo 23. Aug 2021, 13:39

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
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

BecksTown
Beiträge: 8
Registriert: So 22. Aug 2021, 22:56

Re: Makro Probleme

Beitrag von BecksTown » Mo 23. Aug 2021, 13:52

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

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Makro Probleme

Beitrag von karolus » Mo 23. Aug 2021, 15:46

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
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

BecksTown
Beiträge: 8
Registriert: So 22. Aug 2021, 22:56

Re: Makro Probleme

Beitrag von BecksTown » Mo 23. Aug 2021, 16:58

hat geklappt. Besten dank


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten