Makros in einem weiteren Tabellenblatt

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

Moderator: Moderatoren

kestho
Beiträge: 4
Registriert: So, 10.01.2010 11:51

Makros in einem weiteren Tabellenblatt

Beitrag von kestho »

Moin Moin )
Hallöle erst mal an alle hier, da ich ja neu bin,
und wünsche allen einen schönen "Schneetag" ;o)

Nun aber zu meinem Problem....
Ich habe unter der Version OOo3.1Calc ein Statistikprogramm entworfen.
Das erste Tabelenblatt habe ich fertig erstellt und dazu "einige" Makros geschrieben und diese mit den jeweiligen Schaltflächen in dem Tabellenblatt verknüpft.
Klappt alles supi, bis hier hin....
Dann habe ich das Tabellenblatt kopiert und ....
die Makros lassen sich im zweiten, dritten... Tabellenblatt nicht ausführen, bzw. werden, auch dann nur zum Teil, doch wieder im ersten Tabellenblatt ausgeführt.
Im ersten Tabellenbaltt funktioniert alles weiterhin tadellos.

Als Lösungsansatz habe ich dann erst einmal folgendes versucht:
die Makros habe ich kopiert und in ein neues Modul geschrieben, aber das führte leider zu keinem Erfolg...

Anbei eines der Makros zur Ansicht,
sie sind übrigens unter OpenOffice.orgBasic geschieben:

Sub C18_hochrechnen
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 = "$C$18"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
odoc = thisComponent
osheet = odoc.sheets(0) 'zwölftes Tabellenblatt
eingabe = osheet.getcellrangebyname("F113").value
ausgabe = osheet.getcellrangebyname("C18").value
osheet.getcellrangebyname("C18").value = eingabe + ausgabe
osheet.getcellrangebyName("B18").value = osheet.getcellrangebyName("B18").value + 1
osheet.getcellrangebyname("E113").value = 1
End Sub

Ich hoffe, mir kann jemand helfen...
Auf jeden Fall schon einmal besten Dank dafür, dass Ihr Euch mein Geschriebenes zu Gemüte führt.

Bis bald hoffentlich ;o)
LG kestho

Problem behoben :o)
In der Zeile
osheet = odoc.sheets(0) 'zwölftes Tabellenblatt
muss die (0) gegen (1) etc. ausgetauscht werden, dann läufts.....
Manchmal hilft rumprobieren doch ;o)
peterschleif
**
Beiträge: 34
Registriert: Fr, 06.11.2009 05:49

Re: Makros in einem weiteren Tabellenblatt

Beitrag von peterschleif »

kestho hat geschrieben:osheet = odoc.sheets(0) 'zwölftes Tabellenblatt
muss die (0) gegen (1) etc. ausgetauscht werden
Dann funktioniert es im zweiten Sheet, aber doch immer noch nicht im 3.,4.,5.,etc - oder?
Statt einem festen Sheet-Index könntest Du dich ja auch auf das jeweils aktuelle Sheet beziehen:

Peter

Code: Alles auswählen

Sub C18_hochrechnen_ActiveSheet()
    Dim eingabe As Variant
    Dim ausgabe As Variant

    With ThisComponent.CurrentController.ActiveSheet
        eingabe = .getCellRangeByName("F113").Value
        ausgabe = .getCellRangeByName("C18").Value
        .getCellRangeByName("C18").Value  = eingabe + ausgabe
        .getCellRangeByName("B18").Value  = .getCellRangeByName("B18").Value + 1
        .getCellRangeByName("E113").Value = 1
    End With
End Sub
Antworten