Thema Datum  Von Nutzer Rating
Antwort
08.11.2022 16:43:57 Flyinggancho
NotSolved
Blau Wort suchen - nicht zwischen Anführungszeichen
09.11.2022 18:44:23 xlKing
NotSolved
15.11.2022 00:18:34 xlKing
NotSolved
19.11.2022 18:05:59 Gast17967
NotSolved
20.11.2022 23:11:18 xlKing
NotSolved
21.11.2022 00:08:08 xlKing
NotSolved
22.11.2022 14:01:15 Flyinggancho
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
09.11.2022 18:44:23
Views:
389
Rating: Antwort:
  Ja
Thema:
Wort suchen - nicht zwischen Anführungszeichen

Hallo,

dazu musst du wissen, ob irgendwo vor dem gefundenen Wort ein einführendes Gänsefüsschen und irgendwo nach dem Wort ein ausführendes Gänsefüsschen ist. Selbst wenn dem so ist, kann dieses sich bereits auf ein anderes Zitat beziehen. Also braucht man einen Code der prüft ob andere Zitate bereits abgeschlossen sind. Das würde ich aus Gründen der Übersichtlichkeit in eine externe Funktion auslagern. Befindet sich ein Fundwort innerhalb eines Zitats, kannst du einfach nochmal Execute ausführen um dieses zu überspringen, bevor du darauf reagierst.

Bedingung: Es darf sich nicht innerhalb eines bereits eingeleiteten Zitatblocks, ein zweites Zitat mit Gänsefüsschen befinden. Jeder Block muss also für sich abgeschlossen sein, bevor ein neues eingeleitet wird. Die dazwischen liegenden Suchwörter werden gefunden. Probier mal folgenden Code:

Sub Finden()

    vTextFN = "Müller"

    With Selection.Find
        .Text = vTextFN
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute
        
        Do While .Found And InQuotes(.Parent.Range)
          .Execute
        Loop
        
        If .Found Then
          'Selection.InsertFile FileName:=vTextEIN, link:=False
        End If
        
    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 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

Falls der Müller im Dokument mehrfach außerhalb von Zitaten auftauchen sollte, kannst du ja noch eine Schleife drumbasteln, die du for dem ersten Execute einleitest und vor End With beendest.

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
08.11.2022 16:43:57 Flyinggancho
NotSolved
Blau Wort suchen - nicht zwischen Anführungszeichen
09.11.2022 18:44:23 xlKing
NotSolved
15.11.2022 00:18:34 xlKing
NotSolved
19.11.2022 18:05:59 Gast17967
NotSolved
20.11.2022 23:11:18 xlKing
NotSolved
21.11.2022 00:08:08 xlKing
NotSolved
22.11.2022 14:01:15 Flyinggancho
NotSolved