Zellbereich getDataArray() mit queryFormulaCells()

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

marc 70
**
Beiträge: 38
Registriert: Mo, 24.09.2012 23:00

Zellbereich getDataArray() mit queryFormulaCells()

Beitrag von marc 70 »

nabend,

komme hier leider nicht weiter.

Code: Alles auswählen

Dim oRange
Dim aListe 
Dim s As String 
Dim i As Integer
oRange = oDok.sheets.getByName("Sheet1").getCellRangeByName("D28:E80")
aListe = oRange.getDataArray()

        For i = 0 To UBound(aListe)
   s = s & "" & Join(aListe(i), "  ") & "" & CHR$(10)
  Next
  MsgBox s, 0, "Data In Range"
wenn man auf diese Art, den zweispaltigen Zellenbereich ausliest, ist die Ausgabe wie ich sie (fast) haben möchte.
Allerdings werden alle Zellen angezeigt, leere Zellen und Zellen mit Formel.
Ich möchte gerne nur die Zeilen in dessen Zellen eine Formel = TEXT ist.

so was in der Art:

Code: Alles auswählen

    x = oRange.queryFormulaCells(2)
    zellen = x.getCells.CreateEnumeration
    while (zellen.hasMoreElements())
       zelle = zellen.nextElement()
       tmp = UBOUND(aListe())
       Redim Preserve aListe(tmp+1)
       aListe(tmp+1) = zelle.string
    wend
blos halt als Array von Arrays auslesen (so wie oben)

ginge das zu machen?
bekomme dass leider nicht hin.

gruß marc
AOO411m6(Build:9775) unter WIN7 64bit
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Zellbereich getDataArray() mit queryFormulaCells()

Beitrag von F3K Total »

Hallo Marc,
Grundsätzlich liest Du mit dem queryFormulaCells(2) ein Array vom Typ "com.sun.star.sheet.XSheetCellRanges", also die Adressen von ggf. mehreren Zellbereichen aus.
Du erhältst also auch mehrere Ergebnisse:

Code: Alles auswählen

Sub Main

Dim oRange
Dim aListe
Dim aListen(0)
Dim s As String
Dim i As Integer
    oDok = thiscomponent
    oRange = oDok.sheets.getByName("Tabelle1").getCellRangeByName("D28:E80")
    aListe = oRange.getDataArray()

    For i = 0 To UBound(aListe)
        s = s & "" & Join(aListe(i), "  ") & "" & CHR$(10)
    Next i
    MsgBox s, 0, "Data In Range"
    x = oRange.queryFormulaCells(2)
    for j = 0 to x.Count -1
        redim preserve aListen(j)
        aAddress = x(j)
        aListen(j) = aAddress.getDataArray()
        aListe = aListen(j)
		s = ""
        For i = 0 To UBound(aListe)
            s = s & "" & Join(aListe(i), "  ") & "" & CHR$(10)
        Next i
        MsgBox s, 0, "Data In Range "+j
    next j
End Sub
Gruß R
marc 70
**
Beiträge: 38
Registriert: Mo, 24.09.2012 23:00

Re: Zellbereich getDataArray() mit queryFormulaCells()

Beitrag von marc 70 »

Hallo F3K Total,

danke dir, auf die Art ist dass gut zu erkennen.

Den unteren Code hatte ich, im Original mit .queryVisibleCells, vom Mod. Stephan.
Die Funktionsweise übersteigt aber leider mein Basic-Horizont.

gruß marc
AOO411m6(Build:9775) unter WIN7 64bit
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Zellbereich getDataArray() mit queryFormulaCells()

Beitrag von F3K Total »

Hallo Marc,
marc 70 hat geschrieben:Die Funktionsweise übersteigt aber leider mein Basic-Horizont.
wer wird denn gleich die Flinte ins Korn werfen?
Ich gebe Dir einen Tipp:
Installiere Xray.
Dann läßt du mein Makro noch einmal laufen, fügst aber eine Zeile hinzu:

Code: Alles auswählen

x = oRange.queryFormulaCells(2)
xray x ' <---diese Zeile zufügen
    for j = 0 to x.Count -1
Dann öffnet sich ein Fenster, das dir den genauen Aufbau von x zeigt.
So bin ich auch drauf gekommen.

Gruß R

Edit: hier mal ein Beispiel, wie man dann weiterkommen kann: viewtopic.php?f=18&t=60763#p226049
marc 70
**
Beiträge: 38
Registriert: Mo, 24.09.2012 23:00

Re: Zellbereich getDataArray() mit queryFormulaCells()

Beitrag von marc 70 »

Hi F3K Total,

danke für den Tipp mit xray.
Damit kann man ja sogar den Aufbau und Inhalt von Arrays betrachten....echt praktisch.

Also danke noch mal für deine Hilfe, komme dadurch schon ein ganzes Stück weiter.

gruß marc
AOO411m6(Build:9775) unter WIN7 64bit
Antworten