Hey milco,
Hmm, ich glaube, da muss ich mal ein wenig "weiter" ausholen.
Also, zunächst folgendes: ein Numerisches Feld setzt du normalerweise mit der Methode reset() zurück, also auf "nichts".
Richtig wäre also der folgende Code:
Code: Alles auswählen
Sub EmptyNumericField
Dim oForms
oForms = ThisComponent.CurrentController.ActiveSheet.DrawPage.Forms
vForm=oForms.getByIndex(0)
NumericField1 = vForm.getByName("NumericalField")
NumericField1.reset()
End Sub
Nun ist es in der Programmierung so wie überall anders - es gibt viele Wege, das Ziel zu erreichen.
Was du da allerdings tust.... ist schon sehr merkwürdig:
"dispose()" ist eine Methode - und entfernt normalerweise ein Objekt aus dem Speicher - ganz hart, es zerstört also das Objekt!
Eine Methode als Zuweisung für eine Eigenschaft???? Wunderlich, dass da überhaupt etwas herauskommt. Aber OK.
Mit "Option explizit" legst du dir selbst auf, dass alle Variablen vor der ersten Benutzung definiert werden müssen - sonst gibt es einen Laufzeitfehler.
Für das Programm selbst hat das überhaupt keine Auswirkung - lediglich für den Programmierer. Er erkennt nämlich sehr schnell, wenn er sich irgendwo "vertippt" hat und zum Beispiel einen Buchstabendreher in einem Variablennamen erzeugt hat. Das Programm würde jetzt einfach eine weiter Variable eröffnen - und das erwartete Ergebnis wäre dann wahrscheinlich nicht erreichbar.
Also - nur wichtig für den Programmierer, aber dort unbedingt gut!
Damit dürfte auch deine andere Frage erledigt sein: "dispose()" ist keine Variabel, sondern eine Methode, die auf ein Objekt angewendet werden kann. In deinem Fall erwartet der Interpreter aber eine Variable auf der rechten Seite der Zuweisung - und denkt, dass mit "dispose()" ein Variablenname übergeben wird - der ist aber nicht definiert - und kann auch nicht ("belegtes Schlüsselwort").
Du siehst, die Fehler sind vielschichtig - ändere einfach deinen Code.
Viele Grüße
Thomas