SearchDescriptor, Adresse der Funde herausfinden

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

Moderator: Moderatoren

Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

SearchDescriptor, Adresse der Funde herausfinden

Beitrag von MikeRo »

Hallo, ich habe mir ein Makro zusammen geschrieben um die Adressen der Funde zu liefern, aber irgendwie funktioniert es nicht und ich sehe den Fehler auch nicht.

Code: Alles auswählen


Sub Test

    oSheet = oDoc.Sheets().getByName("Angebot")
    oRange = oSheet.getCellRangeByName("A12:A50")
    oSearchDesc = oSheet.createSearchDescriptor
    oSearchDesc.SearchString = "Format"
    oResult = oRange.findAll(oSearchDesc)
    
    	If NOT isNull(oResult) Then
     
     		For Each cell in oResult		
     		
     		r = cell.CellAddress.Row
			MsgBox r
			c = cell.CellAddress.Column
   	   		MsgBox c
   	   		
		Next cell
		
      End If

End Sub
Der Fehler ist Eigenschaft der Methode nicht gefunden CellAdress
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Re: SearchDescriptor, Adresse der Funde herausfinden

Beitrag von Karolus »

Hallo
In deinem 'oResult' sind nicht nur Einzelzellen sondern auch zusammenhängende Zellbereiche
Zellbereiche haben eine Methode '.getRangeAddress' - ( Hint: Einzelzellen haben auch diese Methode. )

Im Übrigen: Mri existiert, benutze dieses Werkzeug und du kannst dir solche Fragen selber beantworten.

Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: SearchDescriptor, Adresse der Funde herausfinden

Beitrag von balu »

Hallo MikeRo,

mich würd mal interessieren wie Du "cell" defeniert hast?
Oder anders gefragt: Was ist "cell"?
Denn so in der Sub, in der Schleife, ist es nur ein Zähler. Und Zähler haben keine Zelladressierung. Deshalb kommt es zu deiner Fehlermeldung. So meine Interpretation. -{falls ich mich nicht vertue}-

Das hebt aber natürlich nicht die Antwort von Karo auf. Ich wollt nur auf eine Auffälligkeit hinweisen.



Gruß
balu
Zuletzt geändert von balu am Di, 27.03.2012 17:56, insgesamt 1-mal geändert.
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: SearchDescriptor, Adresse der Funde herausfinden

Beitrag von MikeRo »

"cell" ist gar nicht definiert, es scheint mir, das es eine Standartfunktion ist. Das Makro habe ich selber irgendwo mal gefunden.
So funktioniert es auch. Allerdings will ich ja nicht die Start und Endzelle, sondern jede Zelladresse einzeln, in der das Wort vorkommt.
(Der Sinn darin ist vor jedem Wort Format die Fußnote 1 anzufügen.)

Code: Alles auswählen

Sub Test

    oSheet = oDoc.Sheets().getByName("Angebot")
oRange = oSheet.getCellRangeByName("A12:B50")
    oSearchDesc = oSheet.createSearchDescriptor
    oSearchDesc.SearchString = "Format"
    oResult = oRange.findAll(oSearchDesc)
    
    	If NOT isNull(oResult) Then
     
     		For Each cell in oResult		
     		
     		        r = cell.getRangeAddress.StartRow
			MsgBox r
			c = cell.getRangeAddress.EndRow
   	   		MsgBox c
   	   		
		Next cell
		
      End If
End Sub
Das ist ja nur das Suchmakro, wenn ich die Adressen habe, kann ich folgendes anfügen und es wird genau das gemacht was ich will (Fußnoten)
Es muss aber vor jedes gefundene Wort und nicht nur das erste oder letzte. Oder habt ihr eine andere Idee, wie man es lösen kann?

Code: Alles auswählen

					Adresse = oDoc.sheets.getByName("Angebot").getCellByPosition(X,Y)
        	   	   	textcur = Adresse.gettext().createtextcursor()
        	   	  	textcur.gotoStart(ture) 	
					textcur.String = FuZahl
					textcur.CharEscapement = 33
					textcur.CharEscapementHeight = 80
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Re: SearchDescriptor, Adresse der Funde herausfinden

Beitrag von Karolus »

Hallo
@Balu
'oResult' ist ein "Container" mit allen Objekten die den Suchbegriff enthalten, diese Objekte - ( die mit 'for each cell in oResult' nacheinander abgearbeitet werden) - können Einzelzellen sein oder auch ein zusammenhängender rechteckiger Zellbereich indem alle Zellen den Suchbegriff enthalten.

'cell' ist hier nur ein Variablenname man könnte genausogut 'for each Radieschen in oResult' schreiben.

Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: SearchDescriptor, Adresse der Funde herausfinden

Beitrag von DPunch »

Servus
MikeRo hat geschrieben:Oder habt ihr eine andere Idee, wie man es lösen kann?
Du könntest einfach in einer Schleife alle Fundadressen abarbeiten.

Code: Alles auswählen

If NOT isNull(oResult) Then
	For Each cell in oResult 
		For nRowCounter = cell.RangeAddress.StartRow To cell.RangeAddress.EndRow
			For nColumnCounter = cell.RangeAddress.StartColumn To cell.RangeAddress.EndColumn
				oTargetCell = oSheet.getCellByPosition(nColumnCounter,nRowCounter)
				textcur = oTargetCell.gettext().createtextcursor()
				textcur.gotoStart(ture)    
				textcur.String = FuZahl
				textcur.CharEscapement = 33
				textcur.CharEscapementHeight = 80
			Next nColumnCounter
		Next nRowCounter
	Next cell
End If
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: SearchDescriptor, Adresse der Funde herausfinden

Beitrag von balu »

Hallo Karo,

manche Zusammenhänge versteht man erst dann, wenn man sich irrt, und anschließend aufgeklärt wird. Also Danke schön für deine Info.


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: SearchDescriptor, Adresse der Funde herausfinden

Beitrag von MikeRo »

Tausend Dank für beide Antworten :)
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Antworten