Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
Am 30.06.2020 um 20:56 schrieb Jörg Schmidt: > >> -Original Message- >> From: Wolfgang Jäth [mailto:jawo.ml.hams...@arcor.de] >> Sent: Tuesday, June 30, 2020 7:20 PM >> To: users-de@openoffice.apache.org >> Subject: Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt" > > Mir fallen beim Vergleich wiederum die schon genannten Zeilen auf, nämlich > ursprünglich: > > oOutput = oSheet.getCellRangeByName (WMOutput) > aOutput = oRange.getDataArray() > > und jetzt: > > oRange = oSheet.getCellRangeByName (SDOutput) > aCellRange = oRange.getDataArray() > > denn dort ist offensichtlich das der erste Code genau die von Dir > ursprünglich genannte Fehlermeldung ("Objektvariable nicht belegt") liefern > wird, weil oRange leer ist. Hmpf; dass ich das nicht gesehen habe ... :-((( Sorry; danke. Wolfgang -- 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-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org
RE: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
> -Original Message- > From: Wolfgang Jäth [mailto:jawo.ml.hams...@arcor.de] > Sent: Tuesday, June 30, 2020 7:20 PM > To: users-de@openoffice.apache.org > Subject: Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt" Mir fallen beim Vergleich wiederum die schon genannten Zeilen auf, nämlich ursprünglich: oOutput = oSheet.getCellRangeByName (WMOutput) aOutput = oRange.getDataArray() und jetzt: oRange = oSheet.getCellRangeByName (SDOutput) aCellRange = oRange.getDataArray() denn dort ist offensichtlich das der erste Code genau die von Dir ursprünglich genannte Fehlermeldung ("Objektvariable nicht belegt") liefern wird, weil oRange leer ist. Ich würde also im ursprünglichen Code ändern auf: oOutput = oSheet.getCellRangeByName (WMOutput) aOutput = oOutput.getDataArray() und wenn es damit läuft, war das der Fehler. Wenn es hingegen weiterhin nicht läuft, dann nenne bitte die nun auftretenden Probleme. Gruß Jörg - To unsubscribe, e-mail: users-de-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org
Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
Am 30.06.2020 um 08:20 schrieb Jörg Schmidt: > >> Ich hab jetzt die Funktion mal vollständig gelöscht, und nochmal >> komplett neu aufgebaut; irgendwie muss ich ja mal weiter >> kommen. Und siehe da, >> sie funktioniert einwandfrei ... :-/ >> >> Wolfgang, der aber trotzdem wissen möchte, was das los war > > Dann solltest Du zweckmäßigerweise die neue Funktion hier posten, denn die > Beteiligten hier auf der Liste sehen gemeinsam leichter den Unterschied zur > bisherigen Version, den Du u.U. übersiehst, weil es nur eine Kleinigkeit ist. Einige Kleinigkeiten mögen anders sein (Namen, die Cost-Deklarationen hab ich raus gezogen), aber die prinzipielle Grundstruktur ist die selbe: sub WriteMatrix (vMatrix As Variant) Dim currRow, currCol, myDigits As Integer Dim aCellRange, myValue As Variant Dim oSheet, oRange As Object oSheet = thisComponent.getCurrentController.getActiveSheet If IsLog >= 1 Then oSheet.getCellRangeByName (SDLog).String = sLogFile End If oRange = oSheet.getCellRangeByName (SDOutput) aCellRange = oRange.getDataArray() For currRow = SDValueMin To SDValueMax For currCol = SDValueMin To SDValueMax myValue = vMatrix (currRow, currCol, SDValue) If myValue > 0 Then aCellRange (currRow)(currCol) = myValue Else myDigits = CountBits (vMatrix (currRow, currCol, SDNumbers)) Select Case myDigits Case 1 aCellRange (currRow)(currCol) = Options2Bits (vMatrix (currRow, currCol, SDNumbers)) Case Else aCellRange (currRow)(currCol) = Options2String (vMatrix (currRow, currCol, SDNumbers), myDigits) End Select End If Next ' : : : ' : : : Next oRange.setDataArray (aCellRange) End Sub ' WriteMatrix Wolfgang -- 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-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org
RE: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
> -Original Message- > From: Wolfgang Jäth [mailto:jawo.ml.hams...@arcor.de] > Sent: Monday, June 29, 2020 8:17 PM > To: users-de@openoffice.apache.org > Subject: Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt" > > Am 29.06.2020 um 16:59 schrieb Wolfgang Jäth: > > Ich hab jetzt die Funktion mal vollständig gelöscht, und nochmal > komplett neu aufgebaut; irgendwie muss ich ja mal weiter > kommen. Und siehe da, > sie funktioniert einwandfrei ... :-/ > > Wolfgang, der aber trotzdem wissen möchte, was das los war Dann solltest Du zweckmäßigerweise die neue Funktion hier posten, denn die Beteiligten hier auf der Liste sehen gemeinsam leichter den Unterschied zur bisherigen Version, den Du u.U. übersiehst, weil es nur eine Kleinigkeit ist. Gruß Jörg - To unsubscribe, e-mail: users-de-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org
Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
Am 29.06.2020 um 16:59 schrieb Wolfgang Jäth: Ich hab jetzt die Funktion mal vollständig gelöscht, und nochmal komplett neu aufgebaut; irgendwie muss ich ja mal weiter kommen. Und siehe da, sie funktioniert einwandfrei ... :-/ Wolfgang, der aber trotzdem wissen möchte, was das los war -- 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-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org
RE: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
> -Original Message- > From: Wolfgang Jäth [mailto:jawo.ml.hams...@arcor.de] > Sent: Monday, June 29, 2020 4:59 PM > To: users-de@openoffice.apache.org > Subject: Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt" > > Am 29.06.2020 um 13:38 schrieb Jörg Schmidt: > >> Und was ich da angegeben habe, *ist* der relevante Code. > > > > Tut mir leid, aber das kann nicht stimmen, weil z.B. > Schleifen fehlen, Variablen-Inhalte fehlen (z.B. kann niemand > errarten was der Inhalt von "WMOutput" ist /wenn es eine > Variable ist, ist kein Inhalt angegeben, wenn es der Name > eines benannten Bereiches wäre, fehlen die "") und weil es > auch nicht stimmen kann das: "Aber gut, kleiner Test, direkt > davor folgende Zeilen eingefügt:", denn das hiesse ja der > Inhalt für aMatrix würde zugewiesen bevor aMatrix deklariert wird. > > AMatrix wird in anderen Funktionen zusammengestellt und soll hier > ausgegeben werden. Aber wenn du mir nicht glaubst, dass der > Code "drum herum" > dir nicht weiter helfen wird, Warum sollte ich das nicht glauben, ss ging darum das der Code nicht vollständig wsr, was auch Bernd aufgefallen war. nun zum Code: im ersten Post schreibst Du: "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." und ich bekomme diesen Fehler ebenfalls. Allerdings ist das beim jetzt von Dir übermittelten Code auch erklärlich: oOutput = oSheet.getCellRangeByName (WMOutput) aOutput = oRange.getDataArray() denn dort ist oRange ohne Inhalt. In Deinem ersten Post wurde im Code hingegen auf oOutput Bezug genommen: oOutput = oSheet.getCellRangeByName (WMOutput) aOutput = oOutput.getDataArray() Vielleicht liegt also nur ein Flüchtigkeitsfehler vor (oRange statt oOutput), der Dir nicht ins Auge fiel? Gruß Jörg - To unsubscribe, e-mail: users-de-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org
Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
Am 29.06.2020 um 11:37 schrieb Bernd Obermayr: > Am 29.06.20 um 08:34 schrieb Wolfgang Jäth: >> | oOutput = oSheet.getCellRangeByName (WMOutput) > Hi, > ist WMOutput eine Variable oder Konstante? Letzters, ja. > Wenn das ein Bereichsname ist müsste der doch quotiert sein oder? > > oOutput = oSheet.getCellRangeByName ("WMOutput") Nein, es handelt sich um eine Stringkonstante ("K1:S9"). Wolfgang -- 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-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org
Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
Am 29.06.2020 um 13:38 schrieb Jörg Schmidt: >> Und was ich da angegeben habe, *ist* der relevante Code. > > Tut mir leid, aber das kann nicht stimmen, weil z.B. Schleifen fehlen, > Variablen-Inhalte fehlen (z.B. kann niemand errarten was der Inhalt von > "WMOutput" ist /wenn es eine Variable ist, ist kein Inhalt angegeben, wenn es > der Name eines benannten Bereiches wäre, fehlen die "") und weil es auch > nicht stimmen kann das: "Aber gut, kleiner Test, direkt davor folgende Zeilen > eingefügt:", denn das hiesse ja der Inhalt für aMatrix würde zugewiesen bevor > aMatrix deklariert wird. AMatrix wird in anderen Funktionen zusammengestellt und soll hier ausgegeben werden. Aber wenn du mir nicht glaubst, dass der Code "drum herum" dir nicht weiter helfen wird, bitte (inklusive dem notwendigsten *zu* dem "drum rum"; wie ich schon schrub, steht /viel/ irrelevantes dazwischen): Const SDValueMin As Integer = 1 Const SDValueMax As Integer = 9 Const SDVCheckMin As Integer = 0 Const SDVCheckMax As Integer = 15 Const SDDataMin As Integer = 0 Const SDDataMax As Integer = 5 Const SDMatrix As Integer = 1 Const SDRanges As Integer = 2 Const SDScopes As Integer = 3 Const SDValue As Integer = 4 Const SDNumbers As Integer = 5 Const SDMaxLoops As Integer = 9 ' : : : ' : : : Const SDLog As String = "X1" Const IsLog As Integer = 1 Dim sLogFile As String Sub Calculate '== Dim myData (SDMatrix To SDScopes) As Variant Dim currLoop, myAlterations As Integer Clear ShowStep ("0.InitRanges") myData (SDRanges) = InitRanges ShowStep ("0.InitScopes") myData (SDScopes) = InitScopes ShowStep ("0.ReadMatrix") myData (SDMatrix) = ReadMatrix ShowStep ("0.Numbers") CheckNumbers (myData) sLogFile = "" currLoop = SDMaxLoops Do currLoop = currLoop - 1 ShowStep (SDMaxLoops-currLoop & ".Singles") myAlterations = CheckSingles (myData) ShowStep (SDMaxLoops-currLoop & ".Triples") myAlterations = myAlterations + CheckTriplets (myData) ShowStep (SDMaxLoops-currLoop & ".Options") myAlterations = myAlterations + CheckOptions (myData) ShowStep (SDMaxLoops-currLoop & ".UpsideDown") myAlterations = myAlterations + CheckUpsides (myData) Loop Until (myAlterations <= 0) OR (currLoop <= 0) Verify (myData) WriteMatrix (myData (SDMatrix)) End Sub Sub WriteMatrix (aMatrix As Variant) Const WMOutput As String = "K1:S9" Const WMCheckpoints As String = "AA1:AP9" Dim currRow, currCol, myDigits As Integer Dim aOutput, myValue As Variant Dim oSheet, oOutput As Object oSheet = thisComponent.getCurrentController.getActiveSheet If IsLog >= 1 Then oSheet.getCellRangeByName (SDLog).String = sLogFile End If oOutput = oSheet.getCellRangeByName (WMOutput) aOutput = oRange.getDataArray() For currRow = SDValueMin To SDValueMax For currCol = SDValueMin To SDValueMax myValue = aMatrix (currRow, currCol, SDValue) If myValue > 0 Then aOutput (currRow)(currCol) = myValue Else myDigits = CountBits (aMatrix (currRow, currCol, SDNumbers)) Select Case myDigits Case 1 aOutput (currRow)(currCol) = Options2Bits (aMatrix (currRow, currCol, SDNumbers)) Case 2 To 6 aOutput (currRow)(currCol) = Options2String (aMatrix (currRow, currCol, SDNumbers), 6) Case Else aOutput (currRow)(currCol) = Options2String (aMatrix (currRow, currCol, SDNumbers), 11) End Select End If Next For currCol = SDVCheckMin To SDVCheckMax ' : : : ' : : : Next Next oOutput.setDataArray (aOutput) End Sub Function ReadMatrix As Variant Const RMInput As String = "A1:I9" Dim currRow, currCol As Integer Dim aMatrix (SDValueMin To SDValueMax, SDValueMin To SDValueMax, SDDataMin To SDDataMax) As Integer Dim aInput, myValue As Variant Dim oSheet, oInput As Object oSheet = thisComponent.getCurrentController.getActiveSheet oInput = oSheet.getCellRangeByName (RMInput) aInput = oInput.getDataArray() ' : : : ' :
RE: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
> -Original Message- > From: Wolfgang Jäth [mailto:jawo.ml.hams...@arcor.de] > Sent: Monday, June 29, 2020 11:24 AM > To: users-de@openoffice.apache.org > Subject: Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt" > > Variant gilt als Dateityp der alle anderen Typen > enthält[1]. Eine als Variant deklarierte Variable wird den > Typ annehmen der dem Inhalt entspricht der ihr zugewiesen wird, z.B.: > > Jein; das Beobachterfenster wird bei Variant als Typ normalerweise > "Variant/Integer" oder "Variant/String" usw. angeben; bei Objekten > scheint es aber nicht "Variant/Object" sondern /nur/ "Object" > an zu geben. > > > Dim x As Variant > > x = "abc" > > MsgBox TypeName(x) 'String > > x = 1.23 > > MsgBox TypeName(x) 'Double > > > > [1] > > das ist eine Besonderheit und nicht selbstredend so, denn > obwohl z.B. eine Long-Variable als erweiterte > Integer-Variable verstanden werden könnte, > > Nein; doch > Long ist ein *eigenständiger* Datentyp, so wie String, > oder Double > usw. Eben, darum geht es. > > >> Bereits beim ersten Durchgang liefert mir die obige Zeile [...] > > > > bitte gib den vollständigen Code an, denn zumindest ich > blicke nicht durch > > Da steht zu viel hierfür irrelevantes dazwischen; ich hab > jedenfalls auf > der betreffenden Zeile die Variablen alle überprüft, die sind > in Ordnumg. > > Und was ich da angegeben habe, *ist* der relevante Code. Tut mir leid, aber das kann nicht stimmen, weil z.B. Schleifen fehlen, Variablen-Inhalte fehlen (z.B. kann niemand errarten was der Inhalt von "WMOutput" ist /wenn es eine Variable ist, ist kein Inhalt angegeben, wenn es der Name eines benannten Bereiches wäre, fehlen die "") und weil es auch nicht stimmen kann das: "Aber gut, kleiner Test, direkt davor folgende Zeilen eingefügt:", denn das hiesse ja der Inhalt für aMatrix würde zugewiesen bevor aMatrix deklariert wird. Aber ich will das nicht vertiefebn. Ich wollte helfen und stellte dazu die selbstverständliche Frage nach vollständigem Code, wenn das nicht geht, geht es eben nicht. Gruß Jörg - To unsubscribe, e-mail: users-de-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org
Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
Am 29.06.20 um 08:34 schrieb Wolfgang Jäth: > | oOutput = oSheet.getCellRangeByName (WMOutput) Hi, ist WMOutput eine Variable oder Konstante? Wenn das ein Bereichsname ist müsste der doch quotiert sein oder? oOutput = oSheet.getCellRangeByName ("WMOutput") -- Gruss Bernd - To unsubscribe, e-mail: users-de-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org
Re: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
Am 29.06.2020 um 09:54 schrieb Jörg Schmidt: > Hallo, > >> -Original Message- >> From: Wolfgang Jäth [mailto:jawo.ml.hams...@arcor.de] >> Sent: Monday, June 29, 2020 8:34 AM >> To: users-de@openoffice.apache.org >> Subject: [Basic] Laufzeitfehler "Objektvariable nicht belegt" >> >> 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). > > Variant gilt als Dateityp der alle anderen Typen enthält[1]. Eine als Variant > deklarierte Variable wird den Typ annehmen der dem Inhalt entspricht der ihr > zugewiesen wird, z.B.: Jein; das Beobachterfenster wird bei Variant als Typ normalerweise "Variant/Integer" oder "Variant/String" usw. angeben; bei Objekten scheint es aber nicht "Variant/Object" sondern /nur/ "Object" an zu geben. > Dim x As Variant > x = "abc" > MsgBox TypeName(x) 'String > x = 1.23 > MsgBox TypeName(x) 'Double > > [1] > das ist eine Besonderheit und nicht selbstredend so, denn obwohl z.B. eine > Long-Variable als erweiterte Integer-Variable verstanden werden könnte, Nein; Long ist ein *eigenständiger* Datentyp, so wie String, oder Double usw. >> Bereits beim ersten Durchgang liefert mir die obige Zeile [...] > > bitte gib den vollständigen Code an, denn zumindest ich blicke nicht durch Da steht zu viel hierfür irrelevantes dazwischen; ich hab jedenfalls auf der betreffenden Zeile die Variablen alle überprüft, die sind in Ordnumg. Und was ich da angegeben habe, *ist* der relevante Code. Im Prinzip handelt es sich, wie dargestellt, um eine reine Umkopieraktion. Weggelassen hab ich lediglich die verschiedenen FOR-Schleifen und Fallabfragen drum rum, denn die geben nun wirklich keine weiteren Hinweise. Intern wird nur mit Integer gerechnet, ausgegeben werden diese Integer-Werte teilweise direkt, teilweise als String aufbereitet (hier Darstellung in Form von Bitmustern). Aber auch diese Konvertierung selbst ist nicht entscheidend. Einzig die Zuweisung selbst, egal mit welchem Typ (bis auf einen), macht irgendwie Probleme. Das hab ich ja über die Variablen i1-i5 durchgeprüft. Wolfgang -- 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-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org
RE: [Basic] Laufzeitfehler "Objektvariable nicht belegt"
Hallo, > -Original Message- > From: Wolfgang Jäth [mailto:jawo.ml.hams...@arcor.de] > Sent: Monday, June 29, 2020 8:34 AM > To: users-de@openoffice.apache.org > Subject: [Basic] Laufzeitfehler "Objektvariable nicht belegt" > > 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). Variant gilt als Dateityp der alle anderen Typen enthält[1]. Eine als Variant deklarierte Variable wird den Typ annehmen der dem Inhalt entspricht der ihr zugewiesen wird, z.B.: Dim x As Variant x = "abc" MsgBox TypeName(x) 'String x = 1.23 MsgBox TypeName(x) 'Double [1] das ist eine Besonderheit und nicht selbstredend so, denn obwohl z.B. eine Long-Variable als erweiterte Integer-Variable verstanden werden könnte, "enthält" eine Long-Variable nicht _den Typ_ Integer, Schaue Dir das untereschiedliche Verhalten an: Dim x As Variant x = 123 MsgBox TypeName(x) 'Integer Dim y As Long y = 123 MsgBox TypeName(y) 'Long! > Bereits beim ersten Durchgang liefert mir die obige Zeile [...] bitte gib den vollständigen Code an, denn zumindest ich blicke nicht durch Gruß Jörg - To unsubscribe, e-mail: users-de-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org
[Basic] Laufzeitfehler "Objektvariable nicht belegt"
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-unsubscr...@openoffice.apache.org For additional commands, e-mail: users-de-h...@openoffice.apache.org