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 Zell
bereiche
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
