langsam nehmen meine ersten Schritte in OOO Basic Gestalt an: Ziel ist ein Makro, das in einer Liste von Haltestellen alle mit dem Namen "- Bahnhof" findet, dann schaut, ob drunter oder drüber eine bestimmte andere Haltestelle steht (in diesem Falle "- Zündholzfabrik") und dann den gefundenen "- Bahnhof" durch eine eindeutige Bezeichnung (hier zum Beispiel "Ebermannstadt Bahnhof" ersetzt.
Nun habe ich wohl zwei Probleme mit der suche/ersetze-Funktion:
1. Mein Gedanke war, zuerst den Suchbegriff zu finden, die Bedingung (Zündholzfabrik drüber oder drunter) zu prüfen, dann den Suchbereich auf die gefundene Zelle einzugrenzen und hier den Suchbegriff zu ersetzen:
Code: Alles auswählen
oSuchen = oBlatt.createReplaceDescriptor()
oSuchen.setSearchString suchbegr
oTrefferZelle = oBlatt.findfirst (oSuchen)
Fundzeile = oTrefferZelle.CellAddress.row
drueZelle = oBlatt.getCellByPosition(0, Fundzeile-1)
if druezelle.string = druedru then
oSuchen = oTrefferZelle.createReplaceDescriptor()
oSuchen.setSearchString suchbegr
oSuchen.setreplaceString ersdurch
end if
druZelle = oBlatt.getCellByPosition(0, Fundzeile+1)
if druzelle.string = druedru then
oSuchen = oTrefferZelle.createReplaceDescriptor()
oSuchen.setSearchString suchbegr
oSuchen.setreplaceString ersdurch
end if
Zweite Frage
- * Vewende ich innerhalb der Suchschleife ".findFirst, wird immer nur das erste Auftreten des Suchbegriffs gefunden,
* vewende ich innerhalb der Suchschleife ".findNext, gibt es eine Fehlermeldung, und
* vewende ich außerhalb der Suchschleife ".findFirst, und innerhalb der Suchschleife ".findNext", kriege ich auch eine Fehlermeldung.
- * Muß ich wirklich zwei Suchprozeduren schreiben (einmal mit findfirst und einmal mit findnext, oder gibt es nicht doch eine einfachere Lösung, und
* falls ja, was mache ich falsch, daß immer ein Laufzeitfehler (s. Anhang) bei findnext auftritt?
Dank und herzliche Grüße,
herrdeh
NB.: Hier der komplette Code - und im Anhang die Arbeitsdatei.
Code: Alles auswählen
Sub Hst_suchen()
Dim oDok As Object
Dim oBlatt As Object
Dim oZelle As Object
Dim oSuchen as Object
Dim oSuchen2 as Object
Dim suchbegr as string
Dim ersdurch as string
Dim druedru as string
Dim fundinhalt as string
dim Fundzeile as Integer
dim drueZelle as Object
dim oTrefferZelle as object
suchbegr = "- Bahnhof"
ersdurch = "Ebermannstadt Bf"
druedru = "- Zündholzfabrik"
' Xray ThisComponent
' Aktualisierung freigeben
' ThisComponent.unlockControllers()
oDok = ThisComponent ' hole Dokumentreferenz
oBlatt = oDok.Sheets(0) ' adressiere Tabellenblatt
oZelle = oBlatt.getCellByPosition(0,0) ' Zellreferenz
ThisComponent.UnlockControllers()
' oBer = oBlatt.getCellRangeByName("A1:A12000")
oSuchen = oBlatt.createReplaceDescriptor()
oSuchen.setSearchString suchbegr
oTrefferZelle = oBlatt.findfirst (oSuchen)
Fundzeile = oTrefferZelle.CellAddress.row
drueZelle = oBlatt.getCellByPosition(0, Fundzeile-1)
if druezelle.string = druedru then
oSuchen = oTrefferZelle.createReplaceDescriptor()
oSuchen.setSearchString suchbegr
oSuchen.setreplaceString ersdurch
end if
druZelle = oBlatt.getCellByPosition(0, Fundzeile+1)
if druzelle.string = druedru then
oSuchen = oTrefferZelle.createReplaceDescriptor()
oSuchen.setSearchString suchbegr
oSuchen.setreplaceString ersdurch
end if
do
oSuchen = oBlatt.createReplaceDescriptor()
oSuchen.setSearchString suchbegr
oTrefferZelle = oBlatt.findnext (oSuchen)
Fundzeile = oTrefferZelle.CellAddress.row
fundinhalt = oTrefferZelle.string
drueZelle = oBlatt.getCellByPosition(0, Fundzeile-1)
if druezelle.string = druedru then
oSuchen = oTrefferZelle.createReplaceDescriptor()
oSuchen.oTrefferZelle.setSearchString suchbegr
oSuchen.setreplaceString ersdurch
end if
drueZelle = oBlatt.getCellByPosition(0, Fundzeile+1)
if druezelle.string = druedru then
oSuchen = oTrefferZelle.createReplaceDescriptor()
oSuchen.oTrefferZelle.setSearchString suchbegr
oSuchen.setreplaceString ersdurch
end if
loop While Not IsNull ( oTrefferZelle )
Msgbox "Fäddich !!!!!!!!!"
end sub