von Toxitom » Mi, 25.01.2006 13:05
Hey Klaus,
hmm, das Thema hatten wir doch schon mal - oder?
Also, der Code hat eine ganz andere Schwäche. Innerhalb einer "with" Zuweisung kannst du natürlich keinen weiteren Basic-Cose ausführen!
Die "With" zuweisung dient quasi nur dazu, die verschiedenen Eigenschaften eines Objektes "platzsparend" zu füllen.
Also, "entzerre" deinen Code und führe zwei neue Varaiblen (Boolsche) ein.
Code: Alles auswählen
Sub SuErMultiple
Dim oDoc as Object
Dim oBereich as Object
Dim oSuche1 as Object
Dim sSu1 as String 'Variable für den 1. Suchbegriff
Dim sEr1 as String 'Variable für die 1. Ersetzung
Dim bSWords as boolean, bSCase as boolean
'--Controller wird für den ausgewählten Zellbereich erzeugt
oDoc = ThisComponent
oBereich = oDoc.getCurrentSelection()'.getRangeAddress()
'--Su/er-Eingaben des Dialogs werden an die Variablen ausgelesen
sSu1 = oDlg.getControl("txtSu1").getText
sEr1 = oDlg.getControl("txtEr1").getText
'--ein ReplaceDescriptor wird für den jeweiligen Suchen/Ersetzungsvorgang erstellt
oSuche1 = oBereich.createReplaceDescriptor
' -- Chechboxen abfragen
If oDlg.getControl("cbxSuWort").state=1 AND oDlg.getControl("cbxGrossKlein").state=1 then
bSWords = true 'Inhalt muss exakt dem Suchstring entsprechen
bSCase = true 'Großschreibung
Elseif oDlg.getControl("cbxSuWort").state=1 AND oDlg.getControl("cbxGrossKlein").state=0 then
bSWords = true 'Inhalt muss exakt dem Suchstring entsprechen
bSCase = false 'Großschreibung
Elseif oDlg.getControl("cbxSuWort").state=0 AND oDlg.getControl("cbxGrossKlein").state=1 then
bSWords = false 'Inhalt muss exakt den Suchstring enthalten
bSCase = true 'Großschreibung
End If
'--1. Suchen/Ersetzen Ausdruck wird definiert
if oDlg.getControl("txtSu1").text <> "1. Suchtext eingeben" then
with oSuche1
.setSearchString(sSu1)
.setReplaceString(sEr1)
.SearchWords = bSWords
.SearchCaseSensitive = bSCase
end with
oBereich.replaceAll(oSuche1)
end if
So sollte es funktionieren
Gruss
Thomas
Hey Klaus,
hmm, das Thema hatten wir doch schon mal - oder?
Also, der Code hat eine ganz andere Schwäche. Innerhalb einer "with" Zuweisung kannst du natürlich keinen weiteren Basic-Cose ausführen!
Die "With" zuweisung dient quasi nur dazu, die verschiedenen Eigenschaften eines Objektes "platzsparend" zu füllen.
Also, "entzerre" deinen Code und führe zwei neue Varaiblen (Boolsche) ein.
[code]Sub SuErMultiple
Dim oDoc as Object
Dim oBereich as Object
Dim oSuche1 as Object
Dim sSu1 as String 'Variable für den 1. Suchbegriff
Dim sEr1 as String 'Variable für die 1. Ersetzung
Dim bSWords as boolean, bSCase as boolean
'--Controller wird für den ausgewählten Zellbereich erzeugt
oDoc = ThisComponent
oBereich = oDoc.getCurrentSelection()'.getRangeAddress()
'--Su/er-Eingaben des Dialogs werden an die Variablen ausgelesen
sSu1 = oDlg.getControl("txtSu1").getText
sEr1 = oDlg.getControl("txtEr1").getText
'--ein ReplaceDescriptor wird für den jeweiligen Suchen/Ersetzungsvorgang erstellt
oSuche1 = oBereich.createReplaceDescriptor
' -- Chechboxen abfragen
If oDlg.getControl("cbxSuWort").state=1 AND oDlg.getControl("cbxGrossKlein").state=1 then
bSWords = true 'Inhalt muss exakt dem Suchstring entsprechen
bSCase = true 'Großschreibung
Elseif oDlg.getControl("cbxSuWort").state=1 AND oDlg.getControl("cbxGrossKlein").state=0 then
bSWords = true 'Inhalt muss exakt dem Suchstring entsprechen
bSCase = false 'Großschreibung
Elseif oDlg.getControl("cbxSuWort").state=0 AND oDlg.getControl("cbxGrossKlein").state=1 then
bSWords = false 'Inhalt muss exakt den Suchstring enthalten
bSCase = true 'Großschreibung
End If
'--1. Suchen/Ersetzen Ausdruck wird definiert
if oDlg.getControl("txtSu1").text <> "1. Suchtext eingeben" then
with oSuche1
.setSearchString(sSu1)
.setReplaceString(sEr1)
.SearchWords = bSWords
.SearchCaseSensitive = bSCase
end with
oBereich.replaceAll(oSuche1)
end if[/code]
So sollte es funktionieren :wink:
Gruss
Thomas