Seite 1 von 1

Basic-Laufzeitfehler '91' Objektvariable nicht belegt

Verfasst: Di, 01.02.2011 18:15
von darko
Hallo,

ich war schon im "fallschen" Forum!
Wegen einer Funktion in einer alten Excel-Datei bekomme ich ständig folgende Fehlermeldung:
"Basic-Laufzeitfehler '91' Objektvariable nicht belegt"

Hier ist der Code:

Code: Alles auswählen

    Option VBASupport 1
    Function SHEETOFFSET(offset, Ref)
    '   Returns cell contents at Ref, in sheet offset
        Application.Volatile
        With Application.Caller.Parent
            SHEETOFFSET = .Parent.Sheets(.Index + offset) _
             .Range(Ref.Address).Value
        End With
    End Function
Im Fenster Aufrufe steht noch die Meldung:

Code: Alles auswählen

 0: SHEETOFFSET
Es wäre absolut genial, wenn ich sie im CALC zum laufen kriegen würde!

Bin dankbar für jede Anregung.

Re: Basic-Laufzeitfehler '91' Objektvariable nicht belegt

Verfasst: Mi, 02.02.2011 12:35
von Karolus
Hallo
Gehöhren die Punkte vor Parent.Sheets und Range wirklich dahin?
Ja, innerhalb des 'with-blocks' musst du dir 'Application.Caller.Parent' dazu denken.

Karo

Re: Basic-Laufzeitfehler '91' Objektvariable nicht belegt

Verfasst: Mi, 02.02.2011 16:40
von hawe
Ich kann's mir nicht vorstellen und sehe auch im Debugger
keine Unterstützung von
Application.Volatile
Application.Caller
das wird so in UNO gar nicht umsetzbar sein...

Re: Basic-Laufzeitfehler '91' Objektvariable nicht belegt

Verfasst: Mi, 02.02.2011 17:01
von Stephan
Bin dankbar für jede Anregung.
Auf StarBasic umschreiben.

Ich sehe keine Besonderheiten, außer eben das Du solche Dinge wie:

Code: Alles auswählen

Application.Volatile
nicht 1:1 übernehmen kanst und meist auch nicht solltest.

Alles Nötige sollte hier stehen:
http://www.calc-info.de/files/Calc_StarBasic.pdf

ansonsten:
viewtopic.php?f=18&t=1553





Gruß
Stephan

Re: Basic-Laufzeitfehler '91' Objektvariable nicht belegt

Verfasst: Mi, 02.02.2011 19:42
von gogo
Sollte die With-Anweisung nicht so aussehen?

Code: Alles auswählen

With Application.Caller
statt

Code: Alles auswählen

With Application.Caller.Parent
g