❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ 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. 🤗

Makroprogrammierung in Calc

Alles zur Programmierung im LibreOffice.
Antworten
5kyy
Beiträge: 6
Registriert: So 6. Jan 2013, 10:12

Makroprogrammierung in Calc

Beitrag von 5kyy » So 6. Jan 2013, 10:20

Morgen,

da ich seit fast 3 Jahren zu 100% auf Linux unterwegs bin, möchte ich auch langsam gewisse Anforderungen und Makros in Calc schreiben.
Zu meinen Windows Zeiten hatte ich keinerlei Probleme mit Excel und VBA, allerdings der Einstieg in die Makroprogrammierung von LibreOffice komme ich absolut nicht klar.

Ich habe hier schonmal etwas probiert aber hätte gerne noch ein paar zusätzliche Funktionen.
Bisher habe ich eine Tabelle mit Zahlen in der Spalte A (einfach 1 - 20).
Das Script prüft den Wert und sofern er kleiner 10 ist wird die Zelle grün gefährt und dahinter GLEICH geschrieben. Am Ende erhalte ich die Total-Errors.

Code: Alles auswählen

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

Sub Check

	osel			=	thisComponent.currentselection
	ncolumnscount	=	osel.columns.count
	
	' check that only one column is selected
	if ncolumnscount <> 1 then
  		msgbox ("Es wurden "+ncolumnscount+" Spalten ausgewählt, bitte nur Zellen einer Spalte wählen!",48,"Fehler!")
  		exit sub
	endif
	
	osheet			=	thiscomponent.sheets(osel.rangeaddress.sheet)
	naktiveColumn	=	osel.rangeaddress.StartColumn
	ocursor			=	osheet.createCursor
	ocursor.gotostartofusedarea(false)
	nStartRow		=	ocursor.rangeaddress.StartRow
	ocursor.gotoendofusedarea(false)
	nEndRow			=	11

	count			=	0

	for i = nStartRow to nEndRow
		ocell = osheet.getcellbyposition(naktiveColumn,i)
		if ocell.value < 10 then
			ocelltochange			=	osheet.getcellbyposition(naktiveColumn+1,i)
			ocelltochange.string	=	"gleich"
			oCell.CellBackColor		=	32768
		else
			ocelltochange			=	osheet.getcellbyposition(naktiveColumn+1,i)
			ocelltochange.string	=	"ungleich"
			oCell.CellBackColor		=	16711680
			count					=	count+1
		endif
	next i
	
	ocelltochange = osheet.getcellbyposition(naktiveColumn+1,i)
	ocelltochange.string = "total errors"
	ocelltochange = osheet.getcellbyposition(naktiveColumn,i)
	ocelltochange.string = count
	
End Sub
Was ich hier gerne anders hätte, wäre:
1. EndRow sollte ich gar nicht vergeben müssen, erst recht nicht mit RANGEADDRESS, da hier dann der Gesamte Bereich verwendet wird. Stattdessen hätte ich gerne, dass jede Zeile durchlaufen wird und er erst bei einer LEERZEILE stoppt
2. Ich möchte gerne die Zelle nicht nach einem Wert <10 Prüfen, sondern die Länge des Inhalts. In meinem Beispiel also statt VALUE < 10 dann LENGTH < 2
3. weiterhin würde ich gerne die Zelle auf einen bestimmten Inhalt prüfen. z.b. wenn die Zelle "Hallo123" ist und ich auf "llo1" prüfe, soll es Wahr sein

Sind sicherlich keine großen Sachen und wäre mit VBA ruck zuck umgesetzt, aber hier nervt mich die Sache nach 2h Misserfolg langsam.
Hoffe ich finde hier die Lösung.

LG
5ky

5kyy
Beiträge: 6
Registriert: So 6. Jan 2013, 10:12

Re: Makroprogrammierung in Calc

Beitrag von 5kyy » So 6. Jan 2013, 10:30

Hey,

okay Anforderung 1 konnte ich nun mit einer WHILE-Schleife lösen. Bei den anderen Beiden häng ich aber noch.

LG

5kyy
Beiträge: 6
Registriert: So 6. Jan 2013, 10:12

Re: Makroprogrammierung in Calc

Beitrag von 5kyy » So 6. Jan 2013, 10:35

Ach Gott...

len(ocell.value)

Hat doch Vorteile wenn man nach den Richtigen Sachen sucht.

SORRY. Der Thread ist gelöst.

Hier steht alles klipp und klar.
http://www.dannenhoefer.de/faqstarbasic ... itung.html


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