Search liefert nicht alle Ergebnisse

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

Moderator: Moderatoren

serr03
Beiträge: 3
Registriert: Mi, 23.09.2015 18:28

Search liefert nicht alle Ergebnisse

Beitrag von serr03 » Mo, 02.04.2018 19:32

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

Stephan
********
Beiträge: 10591
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Search liefert nicht alle Ergebnisse

Beitrag von Stephan » Mo, 02.04.2018 19:51

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

serr03
Beiträge: 3
Registriert: Mi, 23.09.2015 18:28

Re: Search liefert nicht alle Ergebnisse

Beitrag von serr03 » Mo, 02.04.2018 20:22

Danke, habe leider keinen Zugriff auf das Kapitel
Fehlercode: INET_E_RESOURCE_NOT_FOUND

serr03
Beiträge: 3
Registriert: Mi, 23.09.2015 18:28

Re: Search liefert nicht alle Ergebnisse

Beitrag von serr03 » Mo, 02.04.2018 20:31

Vielen Dank, mit prüfen auf Range klappt es jetzt. Super...

Antworten