Seite 1 von 1

SearchDescriptor, Adresse der Funde herausfinden

Verfasst: Di, 27.03.2012 16:45
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

Re: SearchDescriptor, Adresse der Funde herausfinden

Verfasst: Di, 27.03.2012 17:26
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

Re: SearchDescriptor, Adresse der Funde herausfinden

Verfasst: Di, 27.03.2012 17:49
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

Re: SearchDescriptor, Adresse der Funde herausfinden

Verfasst: Di, 27.03.2012 17:55
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

Re: SearchDescriptor, Adresse der Funde herausfinden

Verfasst: Di, 27.03.2012 18:10
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

Re: SearchDescriptor, Adresse der Funde herausfinden

Verfasst: Di, 27.03.2012 19:26
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

Re: SearchDescriptor, Adresse der Funde herausfinden

Verfasst: Mi, 28.03.2012 00:01
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

Re: SearchDescriptor, Adresse der Funde herausfinden

Verfasst: Mi, 28.03.2012 09:51
von MikeRo
Tausend Dank für beide Antworten :)