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
Fehlermeldung "Gesperrte Zellen können nicht geändert w
Moderator: Moderatoren
Hallo
Führe doch nur folgendes Makro aus , bei Selektion einer Zelle:
und der Wert wird gleich in die Zelle geschrieben.
(Während der 'Laufzeit' einer Zellfunktion sind die Zellen gegen Überschreiben geschützt)
Gruß Karo
Führe doch nur folgendes Makro aus , bei Selektion einer Zelle:
Code: Alles auswählen
sub zeitzuGeheimwert
dim odoc as object
dim osheet as object
odoc = ThisComponent
osheet = odoc.CurrentController.ActiveSheet
ozelle = odoc.GetCurrentSelection()
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
uwert = gz3/rz
ozelle.value = uwert
end sub
(Während der 'Laufzeit' einer Zellfunktion sind die Zellen gegen Überschreiben geschützt)
Gruß Karo
Zuletzt geändert von Karolus am Sa, 17.02.2007 00:03, insgesamt 1-mal geändert.
Hallo Karo,
vielen Dank für Deine Mühe. Leider hat sich das Problem noch nicht gelöst. In der Zelle ist zwar der Wert sichtbar, allerdings immer noch nicht als Zahl sondern als Funktion "=zit()". Wenn ich den Inhalt der Zelle kopiere und an anderer Stelle einfüge wird dadurch wieder die Funktion aufgerufen. Wie bekomme ich es hin, dass in der Zelle der Wert als Zahl (z.B. 1) steht ?, so dass er auch kopiert werden kann ?
Viele Grüße
WN
vielen Dank für Deine Mühe. Leider hat sich das Problem noch nicht gelöst. In der Zelle ist zwar der Wert sichtbar, allerdings immer noch nicht als Zahl sondern als Funktion "=zit()". Wenn ich den Inhalt der Zelle kopiere und an anderer Stelle einfüge wird dadurch wieder die Funktion aufgerufen. Wie bekomme ich es hin, dass in der Zelle der Wert als Zahl (z.B. 1) steht ?, so dass er auch kopiert werden kann ?
Viele Grüße
WN
Hallo
Wenn du nur den Code ausführst den ich gepostet habe, und die 'Funktion zit' bei dir löscht , hast du doch gleich den Zahlenwert in der Zelle, den kannst du kopieren wohin willst auch per weiteren Makrocode ??
Ps. Ich hab das missverständliche 'zit' mal eliminiert in der ersten Antwort.
Gruß Karo
Wenn du nur den Code ausführst den ich gepostet habe, und die 'Funktion zit' bei dir löscht , hast du doch gleich den Zahlenwert in der Zelle, den kannst du kopieren wohin willst auch per weiteren Makrocode ??
Ps. Ich hab das missverständliche 'zit' mal eliminiert in der ersten Antwort.
Gruß Karo