openoffice-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Wolfgang Jäth <jawo.ml.hams...@arcor.de>
Subject [Basic] Laufzeitfehler "Objektvariable nicht belegt"
Date Mon, 29 Jun 2020 06:34:03 GMT
Hi, 

ich hab da gerade ein kleines Verständnisproblem. Eigentlich möchte
ich (in einer Schleife) die Anweisung

| aOutput(currRow)(currCol) = Options2String (aMatrix (currRow, currCol, 
SDNumbers))

ausführen. Die einzelnen Variablen sind folgendermaßen definiert 
(und nachweislich auch sinnvoll belegt):

| Dim aMatrix (0 To 9, 0 To 9, 0 To 5) As Integer
| Dim currRow, currCol As Integer
| Dim aOutput As Variant
| Dim oSheet, oOutput As Object
| oSheet = thisComponent.getCurrentController.getActiveSheet
| oOutput = oSheet.getCellRangeByName (WMOutput)
| aOutput = oOutput.getDataArray()

Das Beobachterfenster zeigt mir aMatrix als 'Integer(0 To 9, 0 To 9, 0 To 5)',
wie es sein soll, und aOutput als 'Object(0 To 9)'; etwas merkwürdig,
weil eigentlich definiert als Variant, aber ist auch an anderen Stellen so
(und fonktioniert dort auch).

Bereits beim ersten Durchgang liefert mir die obige Zeile aber den
Basic-Laufzeitfehler "Objektvariable nicht belegt". Dürfte eigentlich
nicht sein, die *sind* alle belegt; definitiv.

Aber gut, kleiner Test, direkt davor folgende Zeilen eingefügt:

| Dim i1, i2, i3, i4, i5 as Variant	
| i1 = aMatrix (currRow, currCol, SDNumbers)
| i2 = Options2String (aMatrix (currRow, currCol))
| i3 = aOutput(currRow)
| i4 = i3(currCol)
| i5 = aOutput(currRow-1)(currCol-1)
| aOutput(currRow)(currCol) = i1
| aOutput(currRow)(currCol) = i2
| aOutput(currRow)(currCol) = i3
| aOutput(currRow)(currCol) = i4
| aOutput(currRow)(currCol) = i5

Das liefert für
- i1 den Typ Variant/Integer (soll auch sein)
- i2 den Typ Variant/String ( -"- )
- i3 den Typ Variant(0 To 8) ( -"- )
- i4 den Typ Variant/String ( -"- )
- i5 den Typ Variant/String ( -"- )
- alle "aOutput()() = ..." - außer bei "= i3" - den Laufzeitfehler
"Objektvariable nicht belegt"

Hä? Ich kann das Element auslesen (Beweis: i4, i5), aber nicht
beschreiben (bzw. nur mit einem Array)????ßßßscharfesSscharfesSscharfesS

Sogar

| aOutput(currRow)(currCol) = 5
| aOutput(currRow)(currCol) = "sdf"

liefern beide den gleichen Fehler. Interssanterweise liefert jedoch

| aOutput(currRow)(currCol) = aMatrix (currRow, currCol, SDValue)

den Fehler "Falsche Verwendung für ein Objekt". Und das alles vor dem
Hintergrund, dass an anderen Stellen z. B. folgender Code durchaus einwandfrei
funktioniert (dewegen hab ich ihn ja schließlich von dort her kopiert):

| Dim currRow, currCol As Integer
| Dim aCellRange As Variant
| Dim oSheet, oRange As Object
| oSheet = thisComponent.getCurrentController.getActiveSheet
| oRange = oSheet.getCellRangeByName (TSIRange)
| aCellRange = oRange.getDataArray()
|   :
| aCellRange (currRow)(currCol) = Options2List (aPlainRange (currCol,
currRow), true)

Also eigentlichgenau das gleiche; auch da wird übrigens aCellRange als
'Object(...)' angegeben.

Spinn jetzt *ich*, oder das /Programm/? Oder hab ich Tomaten auf den 
Augen, und seh irgend etwas entscheidendes nicht?

Wolfgang, momentan ratlos
-- 
Donald Trump ist ein großer Visionär, der seiner Zeit weit voraus ist:
Er verbreitet schon jetzt den Slogan "make America great again", obwohl
dieser erst in der Ära /nach/ ihm seine volle Bedeutung entfalten wird.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Mime
View raw message