von WN » Fr, 16.02.2007 21:58
Hallo zusammen,
ich habe versucht ein Makro zu erstellen, welches jedoch immer mit der Fehlermeldung "Gesperrte Zellen können nicht geändert werden" abschließt.
Das Makro besteht aus:
Sub Funktionsaufruf
Function zit
Sub Inhalte
Die Prozedur "Sub Funktionsaufruf" dient dazu, die nachfolgende Funktion "zit" aufzurufen, indem in die aktuelle Zelle "=zit()" eingetragen wird. Anschließend läuft die Funktion "zit" ab, die als Ergebnis einen berechneten Wert in die aktuelle Zelle einträgt. Da dieser Wert als berechneter Wert eingetragen wird, soll anschließend noch die Prozedur "Inhalte" ablaufen, die diesen berechneten Wert kopieren und über "Bearbeiten/Inhalte einfügen" als Zahl in die Zelle eintragen soll. Aus diesem Grund ist in die Funktion "zit" der Aufruf der "Sub Inhalte" eingebaut. An dieser Stelle wird dann jedoch immer die genannte Fehlermeldung ausgegeben.
Nachfolgend habe ich den Programmcode dargestellt:
sub Funktionsaufruf
dim odoc as object
dim osheet as object
dim i as string
odoc = ThisComponent
osheet = odoc.CurrentController.ActiveSheet
ozelle = odoc.GetCurrentSelection()
i = "=zit()"
ozelle.formula = i
end sub
function zit as double
dim rz as double
dim gz1 as double
dim gz2 as double
dim gz3 as double
rz = 492
gz1=inputbox ("Bitte die Stunden eingeben: ")
gz2=inputbox ("Bitte die Minuten eingeben: ")
gz3=gz1*60 +gz2
zit = gz3/rz
Inhalte 'Aufruf der Prozedur Inhalte
end function
sub Inhalte
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args2(5) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Flags"
args2(0).Value = "SVDNT"
args2(1).Name = "FormulaCommand"
args2(1).Value = 0
args2(2).Name = "SkipEmptyCells"
args2(2).Value = false
args2(3).Name = "Transpose"
args2(3).Value = false
args2(4).Name = "AsLink"
args2(4).Value = false
args2(5).Name = "MoveMode"
args2(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args2())
end sub
Kann mir jemand weiterhelfen, wie ich den Fehler umgehen kann bzw. das ganze eleganter darstellen kann (insbesondere den Teil der Prozedur "Inhalte") ? Es würde mich natürlich auch interessieren, weshalb der Fehler ausgegeben wird.
Vielen Dank schon Mal im voraus.
WN
Hallo zusammen,
ich habe versucht ein Makro zu erstellen, welches jedoch immer mit der Fehlermeldung "Gesperrte Zellen können nicht geändert werden" abschließt.
Das Makro besteht aus:
Sub Funktionsaufruf
Function zit
Sub Inhalte
Die Prozedur "Sub Funktionsaufruf" dient dazu, die nachfolgende Funktion "zit" aufzurufen, indem in die aktuelle Zelle "=zit()" eingetragen wird. Anschließend läuft die Funktion "zit" ab, die als Ergebnis einen berechneten Wert in die aktuelle Zelle einträgt. Da dieser Wert als berechneter Wert eingetragen wird, soll anschließend noch die Prozedur "Inhalte" ablaufen, die diesen berechneten Wert kopieren und über "Bearbeiten/Inhalte einfügen" als Zahl in die Zelle eintragen soll. Aus diesem Grund ist in die Funktion "zit" der Aufruf der "Sub Inhalte" eingebaut. An dieser Stelle wird dann jedoch immer die genannte Fehlermeldung ausgegeben.
Nachfolgend habe ich den Programmcode dargestellt:
sub Funktionsaufruf
dim odoc as object
dim osheet as object
dim i as string
odoc = ThisComponent
osheet = odoc.CurrentController.ActiveSheet
ozelle = odoc.GetCurrentSelection()
i = "=zit()"
ozelle.formula = i
end sub
function zit as double
dim rz as double
dim gz1 as double
dim gz2 as double
dim gz3 as double
rz = 492
gz1=inputbox ("Bitte die Stunden eingeben: ")
gz2=inputbox ("Bitte die Minuten eingeben: ")
gz3=gz1*60 +gz2
zit = gz3/rz
Inhalte 'Aufruf der Prozedur Inhalte
end function
sub Inhalte
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args2(5) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Flags"
args2(0).Value = "SVDNT"
args2(1).Name = "FormulaCommand"
args2(1).Value = 0
args2(2).Name = "SkipEmptyCells"
args2(2).Value = false
args2(3).Name = "Transpose"
args2(3).Value = false
args2(4).Name = "AsLink"
args2(4).Value = false
args2(5).Name = "MoveMode"
args2(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args2())
end sub
Kann mir jemand weiterhelfen, wie ich den Fehler umgehen kann bzw. das ganze eleganter darstellen kann (insbesondere den Teil der Prozedur "Inhalte") ? Es würde mich natürlich auch interessieren, weshalb der Fehler ausgegeben wird.
Vielen Dank schon Mal im voraus.
WN