Seite 1 von 5

-

Verfasst: Do, 27.12.2012 20:40
von Benutzer 48566 gelöscht
----------

Re: getDataArray -> not assignable by given value?

Verfasst: Do, 27.12.2012 22:34
von Karolus
Hallo
An das DataArray eines Namensbereichs kommt man über:

Code: Alles auswählen

Namerange = oDoc.NamedRanges.getByName("Mengen").getReferredCells().getDataArray() 
das DataArray besteht immer aus einem äusserem (Zeilen)array mit inneren (Spalten)array's

Karolus

-

Verfasst: Fr, 28.12.2012 09:01
von Benutzer 48566 gelöscht
----------

Re: getDataArray -> not assignable by given value?

Verfasst: Fr, 28.12.2012 10:15
von F3K Total
Moin,
dieser Code funzt:

Code: Alles auswählen

Sub S_get_variables
    Variables = F_get_solver_variables_from_named_Range("Mengen")
    xray Variables  
end sub

Function F_get_solver_variables_from_named_Range(S_named_Range)as Object
    dim Variables(0) as new com.sun.star.table.CellAddress
    oDoc = ThisComponent
    oNamedRanges = thiscomponent.NamedRanges
    oRangeMengen = oNamedRanges.getbyname(S_named_Range)
    oCellRangeMengen = oRangeMengen.ReferredCells
    oCellRangeMengenRangeAddress = oCellRangeMengen.RangeAddress
    nsheet = oCellRangeMengenRangeAddress.Sheet
    oSheet = oDoc.Sheets(nsheet)'Tabelle auf der der Bereich benamst wurde
    nSC = oCellRangeMengenRangeAddress.StartColumn
    nSR = oCellRangeMengenRangeAddress.StartRow
    nEC = oCellRangeMengenRangeAddress.EndColumn
    nER = oCellRangeMengenRangeAddress.EndRow
    counter = 0
    for i = nSC to nEC
        for k = nSR to nER
            ocell = oSheet.getcellbyposition(i,k)
            Redim preserve Variables(counter)
            Variables(counter) = ocell.celladdress
            counter = counter + 1
        next k
    next i
    F_get_solver_variables_from_named_Range = Variables
End Function
Sollte sich der Namensbereich ausschließlich in einer Spalte befinden, läßt sich der Code deutlich vereinfachen.
Viel Spaß
Gruß R

-

Verfasst: Fr, 28.12.2012 10:45
von Benutzer 48566 gelöscht
----------

-

Verfasst: Fr, 28.12.2012 11:45
von Benutzer 48566 gelöscht
----------

Re: getDataArray -> not assignable by given value?

Verfasst: Fr, 28.12.2012 12:51
von F3K Total
Hi,
hast Du auf dem Blatt einen Namen "Mengen" vergeben?
Ich denke mal, das wäre dann zu kompliziert, oder?
Überhaupt nicht, darum habe ich die Funktion F_get_solver_variables_from_named_Range geschrieben, die natürlich in deinem Modul stehen muß.
Wann immer du die Zelladressen eines Namensbereiches benötigst, fügst du in deinen Code nur diese Zeile ein:

Code: Alles auswählen

Variables = F_get_solver_variables_from_named_Range("Mengen")
oder

Code: Alles auswählen

Variables = F_get_solver_variables_from_named_Range("Mengen2")
oder

Code: Alles auswählen

Variables = F_get_solver_variables_from_named_Range("Mengenxyz")
Gruß R

-

Verfasst: Fr, 28.12.2012 14:49
von Benutzer 48566 gelöscht
----------

Re: getDataArray -> not assignable by given value?

Verfasst: Fr, 28.12.2012 15:20
von F3K Total
miamit hat geschrieben:und der Geltungsbereich ist Dokument/global
Bei mir finde ich keine Einstellung Geltungsbereich! Welche Version von OOo hast Du?
miamit hat geschrieben:über dem Beginn meines Subs einfügen?
Egal, drüber oder drunter.
Gruß R

-

Verfasst: Fr, 28.12.2012 15:54
von Benutzer 48566 gelöscht
----------

-

Verfasst: Fr, 28.12.2012 16:19
von Benutzer 48566 gelöscht
----------

Re: getDataArray -> not assignable by given value?

Verfasst: Fr, 28.12.2012 18:52
von F3K Total
Hallihallo,
miamit hat geschrieben:Wirft Fehler in Zeile 3 raus (xray Variables ) : Sub- oder Function-Prozedur nicht definiert.
heißt nichts weiter, als das Du kein XRay installiert hast, das ist ein Inspection Tool, mit dem ich überprüft habe ob das Ergebnis in Variables() stimmt.
Lösche einfach diesen Part:

Code: Alles auswählen

Sub S_get_variables
    Variables = F_get_solver_variables_from_named_Range("Mengen")
    xray Variables
end sub
Wenn ich Dein Makro richtig verstehe, übergibst Du die Zelladressen in dieser Zeile an den Solver:

Code: Alles auswählen

solv.Variables = Variables()
Ersetze in Deinem Code diese Zeile durch:

Code: Alles auswählen

solv.Variables = F_get_solver_variables_from_named_Range("Mengen")
und es sollte klappen.

Gruß R

-

Verfasst: Fr, 28.12.2012 19:54
von Benutzer 48566 gelöscht
----------

Re: getDataArray -> not assignable by given value?

Verfasst: Fr, 28.12.2012 20:08
von F3K Total
Du sollst nicht die function, sondern Dein Macro starten ... denn wenn du die function startest, fehlt "Mengen", was du in der eben oben geänderten Zeile übergibst.
Dazu gehst Du in dein Tabellenblatt, Extras/Makros/Makro ausführen ...->zum Makro OptimizeDEPS navigieren->Ausführen
Muss ich eigentlich diese hier löschen
AUF KEINEN FALL!!!

-

Verfasst: Sa, 29.12.2012 10:54
von Benutzer 48566 gelöscht
----------