Seite 1 von 1

Search liefert nicht alle Ergebnisse

Verfasst: Mo, 02.04.2018 19:32
von serr03
benutze Apache OpenOffice 4.1.5

Hallo,
bei der Search Methode solle Ergebnisse kopiert werden.
dieses geht gut, solange der Begriff nicht direkt hintereinander in der nächsten Zeile steht.
Der Supportsservice("com.sun.star.table.Cell") ist dann scheinbar fehlerhaft???
Wird zwischen den beiden Zeilen eine Leerzeile eingefügt, werden diese wieder korrekt kopiert.

Code: Alles auswählen

sub Searchxx
sCol = 0
oSuche = "Begriff"
    sSpalte = oSheet.getColumns.getByIndex(sCol)
    oSearch = sSpalte.createSearchDescriptor       'Zeile die durchsucht werden soll
    oSearch.SearchString = oSuche                  'Begriff nach dem gesucht wird
    oSearch.SearchRegularExpression = False
    oResult = sSpalte.findAll(oSearch)  
                'nächsten Begriff suchen, falls öfters vorkommt. 
    For n = 0 To oResult.Count - 1   
           oFound = oResult(n)                                                                        <--- z.b. n=11  aber bei n=5 und 6 wird nicht kopiert aus obigen Grund
           If oFound.supportsservice("com.sun.star.table.Cell") Then
             frow =oFound.Celladdress.row
          'copy
        sRange = oSheet.getCellRangeByPosition(0,frow,9,frow).getRangeAddress()
        zRange = zSheet.getCellByPosition(Ca,Ra+n).getCellAddress
        zSheet.copyRange(zRange, sRange)
           End If 
       Next n 
 end sub
vielen Dank fall jemand einen Tip hat.

_________________
Moderationshinweis
Zur übersichtlichen Darstellung des Textes und vom Programmcode im Text [​​code][​/code] Tags gesetzt.
lorbass, Moderator

Re: Search liefert nicht alle Ergebnisse

Verfasst: Mo, 02.04.2018 19:51
von Stephan
Der Supportsservice("com.sun.star.table.Cell") ist dann scheinbar fehlerhaft???
nicht fehlerhaft sondern zwei Zellen sind ein Zellrange-Objekt (com.sun.star.sheet.SheetCellRange) und kein Zellobjekt (com.sun.star.table.Cell), weswegen folgende Abfrage FALSE liefert:

Code: Alles auswählen

If oFound.supportsservice("com.sun.star.table.Cell") Then
Du musst also sowohl auf Zell-Objekte als auch auf Zellrange-Objekte prüfen und beim Auftreten von ZellRange-Objekten entweder durch alle Zellen des Rangeobjekts interieren oder das Zellrange-Objekt als Solches behandeln (z.B. mit .getDataArray() und .setDataArray() arbeiten).

Für das Unterscheiden von Zellen und Zellbereichen kannst Du den Code aus:
http://www.calc-info.de/files/Calc_StarBasic.pdf

und dort "7.1 Selektionen behandeln" sinngemäß verwenden.


Gruß
Stephan

Re: Search liefert nicht alle Ergebnisse

Verfasst: Mo, 02.04.2018 20:22
von serr03
Danke, habe leider keinen Zugriff auf das Kapitel
Fehlercode: INET_E_RESOURCE_NOT_FOUND

Re: Search liefert nicht alle Ergebnisse

Verfasst: Mo, 02.04.2018 20:31
von serr03
Vielen Dank, mit prüfen auf Range klappt es jetzt. Super...