Hallo zusammen,
besten Dank für eure Unterstützung.
Ja "search" war sicherlich nicht besonders clever gewählt. Ich werde versuchen mich zu bessern.
Stephans Hinweis ist den auch gleich die Lösung für das "Problem"
ich hatte ja einen String an eine Anweisung übergeben die eine Index Angabe erwartet und jeder übergebene String
wurde scheinbar als 0 gewertet und somit wurde immer der erste verfügbare benannte Bereich angesprochen.
Code: Alles auswählen
falsch
sRange = thiscomponent.namedRanges(sName).ReferredCells
richtig
sRange = ThisComponent.NamedRanges.getByName(sName).ReferredCells
und wie so oft im Leben, kaum macht man etwas richtig, schon funktioniert es
so hier zur Endkontrolle der komplette Code
jetzt werden auch mehrspaltige Bereiche abgeabeitet und eventuelle leere Zellen übersprungen.
Code: Alles auswählen
FUNCTION EXTRACTIF(LongText as String, sRname as string)
' diese Funktion ermittelt ob ein Begriff aus einem benannten Bereich "sRname"
' im LongText String enthalten ist und gibt den Begriff ggf. aus, Leezellen werden ignoriert
sRange = ThisComponent.NamedRanges.getByName(sRname).ReferredCells
oSheet = ThisComponent.NamedRanges.getByName(sRname).ReferredCells.Spreadsheet
iScol = sRange.RangeAddress.StartColumn
iSrow = sRange.RangeAddress.StartRow
for ic=0 to sRange.Columns.count
for ir=0 to sRange.Rows.count -1
sCheck = oSheet.GetCellByPosition(iScol+ic,iSrow+ir).string
if inStr(LongText,sCheck) > 0 and sCheck <> "" then
EXTRACTIF = oSheet.GetCellByPosition(iScol+ic,iSrow+ir).string
exit function
end if
next
next
EXTRACTIF = "~"
End FUNCTION
habe fertig