Seite 1 von 1

Zellbereich getDataArray() mit queryFormulaCells()

Verfasst: Mi, 06.03.2013 00:22
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

Re: Zellbereich getDataArray() mit queryFormulaCells()

Verfasst: So, 10.03.2013 12:18
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

Re: Zellbereich getDataArray() mit queryFormulaCells()

Verfasst: So, 10.03.2013 18:19
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

Re: Zellbereich getDataArray() mit queryFormulaCells()

Verfasst: So, 10.03.2013 18:27
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

Re: Zellbereich getDataArray() mit queryFormulaCells()

Verfasst: Fr, 15.03.2013 23:24
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