Thema Datum  Von Nutzer Rating
Antwort
14.11.2022 20:13:54 Lothar
NotSolved
Blau Suchen und Ersetzen zwischen Tags
15.11.2022 00:15:16 xlKing
NotSolved
16.11.2022 09:19:49 Lothar
NotSolved
17.11.2022 01:56:38 xlKing
NotSolved
17.11.2022 02:19:06 xlKing
NotSolved
17.11.2022 09:46:58 Lothar
NotSolved
17.11.2022 09:52:04 Gast78825
NotSolved
17.11.2022 13:56:09 xlKing
NotSolved
17.11.2022 14:04:15 xlKing
NotSolved
17.11.2022 16:03:23 Gast28655
NotSolved
17.11.2022 17:49:52 Gast23666
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
15.11.2022 00:15:16
Views:
218
Rating: Antwort:
  Ja
Thema:
Suchen und Ersetzen zwischen Tags

Hi Lothar,

das kommt mir doch bekannt vor. Da hab ich doch erst letzte Woche was zu geschrieben:

https://www.vba-forum.de/View.aspx?ziel=77880-Wort suchen - nicht zwischen Anführungszeichen

Hier ist es allerdings der umgekehrte Fall. Einfach den Müller durch ein Leerzeichen austauschen und die Schleife ein klein wenig anpassen. Dann sieht der Code so aus.

Sub Ersetzen()

    vTextFN = " "

    With Selection.Find
        .Text = vTextFN
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        Do
          .Execute
          If InQuotes(.Parent.Range) Then .Parent.Text = "_"
        Loop Until .Found = False
    End With
     
End Sub

Function InQuotes(rng As Range) As Boolean
  
  Dim drng As Range, t As String
  Set drng = rng.Parent.Range
  Dim a As Long, a1 As Long, a2 As Long, a3 As Long, b As Long, b1 As Long, b2 As Long, b3 As Long, x As Byte
  a1 = InStrRev(drng.Text, Chr(34), rng.Start + 1)
  a2 = InStrRev(drng.Text, Chr(132), rng.Start + 1)
  a3 = InStrRev(drng.Text, Chr(147), rng.Start + 1)
  a = IIf(a2 > a1, a2, a1)
  a = IIf(a3 > a, 0, a)
  b1 = InStr(rng.Start + 1, drng.Text, Chr(34))
  b2 = InStr(rng.Start + 1, drng.Text, Chr(147))
  b3 = InStr(rng.Start + 1, drng.Text, Chr(132))
  b = IIf(b2 < b1 And b2 > 0 Or b1 = 0, b2, b1)
  b = IIf(b3 < b And b3 > 0, 0, b)
  If a > 0 Then
    t = drng.Characters(a).Next
    If t <> " " And t <> Chr(13) And t <> Chr(10) Then x = x + 1
  End If
  If b > 0 Then
    t = drng.Characters(b).Previous
    If t <> " " And t <> Chr(13) And t <> Chr(10) Then x = x + 1
  End If
  
  InQuotes = x = 2
  
End Function

Gruß Mr. K.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
14.11.2022 20:13:54 Lothar
NotSolved
Blau Suchen und Ersetzen zwischen Tags
15.11.2022 00:15:16 xlKing
NotSolved
16.11.2022 09:19:49 Lothar
NotSolved
17.11.2022 01:56:38 xlKing
NotSolved
17.11.2022 02:19:06 xlKing
NotSolved
17.11.2022 09:46:58 Lothar
NotSolved
17.11.2022 09:52:04 Gast78825
NotSolved
17.11.2022 13:56:09 xlKing
NotSolved
17.11.2022 14:04:15 xlKing
NotSolved
17.11.2022 16:03:23 Gast28655
NotSolved
17.11.2022 17:49:52 Gast23666
NotSolved