Brauche Hilfe bei einer Funktion

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

jhaas
Beiträge: 2
Registriert: Do, 19.07.2012 19:06

Brauche Hilfe bei einer Funktion

Beitrag von jhaas »

Hallo!

Ich habe einen Button erstellt, der in einer Zelle +1 macht.
Er funktioniert ohne Probleme, aber wenn ich diesen Button in einer 2.Tabelle betätige, dann ändert er den Wert trotzdem bei Tabelle 1.
Das Makro ist schon etwas älter und ich habe damals einfach getByName ("Tabelle1") verwendet.
Jedoch möchte ich, dass er die Funktion immer für die aktuelle Tabelle ausführt, ohne extra ein Makro erstellen zu müssen.
Ich habe auch schon gesehen, dass die Funktion getActiveSheet existiert, jedoch funktioniert diese nicht.
Könnt ihr mir helfen?

Der Code:

Code: Alles auswählen

Sub plus1 ( oEvent )
	myDoc = thisComponent
	dim targetcell as string
	targetcell = oEvent.Source.Model.Name
	mySheet = myDoc.Sheets().getByName("Tabelle1")  <-- wenn man es zu getActiveSheet setzt, funktioniert es nicht mehr
	mycell=mysheet.getCellRangeByName(targetcell) 
	mycell.value = mycell.value + 1
End Sub
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Brauche Hilfe bei einer Funktion

Beitrag von Karolus »

Hallo

Trag für die Schaltflächen jeweils unter →Allgemein→Hilfetext den Tabellennamen ein.

Den bekommst du dann im Makro über:

Code: Alles auswählen

sheetname = event.Source.Model.HelpText
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
jhaas
Beiträge: 2
Registriert: Do, 19.07.2012 19:06

Re: Brauche Hilfe bei einer Funktion

Beitrag von jhaas »

Danke für die Hilfe, habe aber schon eine eigene Möglichkeit gefunden.
Ist vielleicht ein bisschen komplizierter, aber es funktioniert.
Hier der Code:

Code: Alles auswählen

Sub plus1 ( oEvent )
	myDoc = thisComponent
	dim Tabellenname as string
	Tabellenname = ThisComponent.getCurrentController.getActiveSheet.getName()
	dim targetcell as string
	targetcell = oEvent.Source.Model.Name
	odoc=ThisComponent
	mySheet = oDoc.Sheets.getByName(Tabellenname)
	mycell=mysheet.getCellRangeByName(targetcell) 
	mycell.value = mycell.value + 1
End Sub
Edit: Dann braucht man auch keinen Namen der Tabelle eingeben, weil sich das Makro den selber raussucht.
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Brauche Hilfe bei einer Funktion

Beitrag von Karolus »

Hallo

Gut, aber dann kannst du auch gleich .getActiveSheet ( ohne .getName() ) nehmen, und vor allem aufräumen:

Code: Alles auswählen

Sub plus1 ( oEvent )
   Doc = thisComponent
   sheet = Doc.getCurrentController.getActiveSheet()
   cellname = oEvent.Source.Model.Name
   ocell = sheet.getCellRangeByName( cellname )
   ocell.value = ocell.value + 1
End Sub
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Brauche Hilfe bei einer Funktion

Beitrag von Karolus »

Hallo

Ich wollte eigentlich nur die überflüssigen oder sinnlosen Teile entfernen, und nicht beweisen das alles in einer Zeile geht.

Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten