Searchdescriptor oder Alternative? [solved]

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

Moderator: Moderatoren

Bergkaffee
*
Beiträge: 14
Registriert: Di, 15.03.2011 13:11

Searchdescriptor oder Alternative? [solved]

Beitrag von Bergkaffee »

Hallo zusammen,
ich hab da ein kleines Problem: ich habe bis jetzt ziemlich viel über Formeln in meinem derzeitigen Calc-Sheet lösen können. Allerdings möchte ich jetzt einiges via Basic ein wenig sauberer lösen. Das hat auch soweit geklappt bis jetzt. Nun bin ich aber in einer Sackgasse gelandet und wollte mal fragen ob jemand einen Ausweg weiss.
Was ich erreichen möchte ist:
Ich habe in der Variable "PT" einen Wert aus einer Zelle gespeichert. Dieser kann sowohl eine Zahl als auch ein Text sein, deswegen hab ich in mit

Code: Alles auswählen

PT = STab.getCellRangeByName("A" & i ).formula
aus der Tabelle STab geholt.
Nun möchte ich folgendes: Es soll getestet werden ob dieser Wert (PT) in einer der Zellen F3:F20 aus der Tabelle LTab vorkommt (Wenn er vorkommt, dann kann er nur einmal vorkommen). Desweiteren muss ich die Zeile ausfindig machen in der der Wert steht um später einen Wert aus einer anderen Spalte übernehmen zu können. Wenn z.B. in Zelle F3 der Wert "PT" steht muss ich mir den Inhalt von Zelle G3 und H3 in eine Variable speichern.
Bis jetzt habe ich zwar schon herrausgefunden, dass das mit einem Searchdescriptor funktionieren könnte, bin aber bei der Umsetztung kläglich gescheitert.
Hat jemand einen Tipp für mich wie ich das hinbekommen könnte?
Gruß,
Tom
Zuletzt geändert von Bergkaffee am Mo, 04.04.2011 10:36, insgesamt 1-mal geändert.
Axel Richter
****
Beiträge: 159
Registriert: So, 17.10.2010 16:54

Re: Searchdescriptor oder Alternative?

Beitrag von Axel Richter »

Hallo Tom,
Bergkaffee hat geschrieben:Ich habe in der Variable "PT" einen Wert aus einer Zelle gespeichert. Dieser kann sowohl eine Zahl als auch ein Text sein
Dann würde ich aber [XCell].String nehmen und nicht .Formula.
Bergkaffee hat geschrieben:Nun möchte ich folgendes: Es soll getestet werden ob dieser Wert (PT) in einer der Zellen F3:F20 aus der Tabelle LTab vorkommt (Wenn er vorkommt, dann kann er nur einmal vorkommen). Desweiteren muss ich die Zeile ausfindig machen in der der Wert steht um später einen Wert aus einer anderen Spalte übernehmen zu können. Wenn z.B. in Zelle F3 der Wert "PT" steht muss ich mir den Inhalt von Zelle G3 und H3 in eine Variable speichern.
Bis jetzt habe ich zwar schon herrausgefunden, dass das mit einem Searchdescriptor funktionieren könnte, bin aber bei der Umsetztung kläglich gescheitert.

Code: Alles auswählen

...
LTab = ThisComponent.Sheets(1) 'LTab ist ein XSpreadsheet
...
oSearchDescriptor = LTab.createSearchDescriptor()
oSearchDescriptor.SearchString = PT
oFound = LTab.getCellRangeByName("F2:F20").FindFirst(oSearchDescriptor)

if oFound is Nothing then
 MsgBox PT & " wurde nicht gefunden."
else
 sAddressFound = oFound.AbsoluteName
 lRowNumber = oFound.CellAddress.Row
 MsgBox PT & " wurde gefunden: " & sAddressFound & " Zeilenindex: " & CStr(lRowNumber)
endif
viele Grüße

Axel
Bergkaffee
*
Beiträge: 14
Registriert: Di, 15.03.2011 13:11

Re: Searchdescriptor oder Alternative?

Beitrag von Bergkaffee »

Vielen Dank! Hab den Code mit ein paar Änderung übernommen und es funktioniert wunderbar!
Antworten