Seite 1 von 1

Brauche Hilfe bei einer Funktion

Verfasst: Do, 19.07.2012 19:14
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

Re: Brauche Hilfe bei einer Funktion

Verfasst: Do, 19.07.2012 19:52
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

Re: Brauche Hilfe bei einer Funktion

Verfasst: Do, 19.07.2012 20:43
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.

Re: Brauche Hilfe bei einer Funktion

Verfasst: Do, 19.07.2012 21:22
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

Re: Brauche Hilfe bei einer Funktion

Verfasst: Do, 19.07.2012 22:18
von Karolus
Hallo

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

Karo