mit eurer hilfe habe ich ein funktionierendes makro, das mehrere su/er-vorgänge auch über alle sheets hinweg durchführt. meine frage ist nun, ob der code noch optimiert werden kann. dies wird sicherlich möglich sein, da ich mich erst seit anfang dezember mit starbasic beschäftige.
Code: Alles auswählen
Sub SuErMultipleAlleBlaetter
Dim oDoc as Object
Dim oSheets as Object
Dim oSheet as Object
Dim oSuche1 as Object
Dim oSuche2 as Object
Dim sSu1 as String 'Variable für den 1. Suchbegriff
Dim sEr1 as String 'Variable für die 1. Ersetzung
Dim sSu2 as String 'Variable für den 2. Suchbegriff
Dim sEr2 as String 'Variable für die 2. Ersetzung
Dim I as integer
Dim bSWords as boolean, bSCase as boolean 'Schalter für einmal vorkommende Wörter bzw. Groß/Kleinschreibung
oDoc = ThisComponent
oSheets = oDoc.sheets
oSheet = oDoc.CurrentController.activeSheet
' -- Chechboxen Wörter und Groß/Kleinschreibung abfragen
If oDlg.getControl("cbxSuWort").state=1 AND oDlg.getControl("cbxGrossKlein").state=1 then
bSWords = true 'nur ein Wort darf vorkommen
bSCase = true 'Großschreibung
Elseif oDlg.getControl("cbxSuWort").state=1 AND oDlg.getControl("cbxGrossKlein").state=0 then
bSWords = true
bSCase = false
Elseif oDlg.getControl("cbxSuWort").state=0 AND oDlg.getControl("cbxGrossKlein").state=1 then
bSWords = false
bSCase = true
End If
'--Su/er-Eingabe des Dialogs werden an die Variablen ausgelesen
sSu1 = oDlg.getControl("txtSu1").getText
sEr1 = oDlg.getControl("txtEr1").getText
sSu2 = oDlg.getControl("txtSu2").getText
sEr2 = oDlg.getControl("txtEr2").getText
'--ein ReplaceDescriptor wird für den jeweiligen Suchen/Ersetzungsvorgang bezogen auf oSheet erstellt
oSuche1 = oSheet.createReplaceDescriptor
oSuche2 = oSheet.createReplaceDescriptor
'--1. Suchen/Ersetzen Ausdruck wird definiert
'--Schleife über alle Blätter
For I = 0 to oSheets.getCount() -1
oSheet = oSheets.getByIndex(I)
oSuche1.setSearchString(sSu1)
oSuche1.setReplaceString(sEr1)
oSuche1.SearchWords = bSWords
oSuche1.SearchCaseSensitive = bSCase
oSheet.replaceAll(oSuche1)
next I
'--2. Suchen/Ersetzen Ausdruck wird definiert
'--Schleife über alle Blätter
For I = 0 to oSheets.getCount() -1
oSheet = oSheets.getByIndex(I)
oSuche2.setSearchString(sSu2)
oSuche2.setReplaceString(sEr2)
oSuche2.SearchWords = bSWords
oSuche2.SearchCaseSensitive = bSCase
oSheet.replaceAll(oSuche2)
next I
End sub
grüße klaus