Word - Markieren in einem Makro

  • #1
G

gast-1234

Guest
Hallo,

für eine Dokumentation muss ich oft unformatierte Texte, die aber immer den gleichen Aufbau haben, umformatieren. Dazu habe ich mir diverse Makros aufgezeichnet, die das hervorragend erledigen.

In einer Zeile werden die Modellbezeichnungen in []-Klammern eingeschlossen. Diese Bezeichnungen waren bisher immer so kurz, dass sie in eine Zeile gepasst haben. So konnte ich mit der Tastenkombination UMSCHALT+ENDE und dann mit der NACH-LINKS-Taste den Text komplett markieren und dann die entsprechende Formatierungsänderung vornehmen.

Nun ist es aber ab und zu so, dass diese Bezeichnung auch über zwei Zeilen gehen *kann*. Mit meinen oben beschrieben Tastenkombinationen komme ich da nicht mehr weiter, weil so dann nur die erste Zeile formatiert wird.

Daher suche ich eine Möglichkeit, wie ich die Markierung in diesem Fall bis zur schließenden ]-Klammer erweitern kann, egal, ob die Bezeichnung über eine oder über zwei Zeilen geht.

Kennt da jemand einen Trick?

Viele Dank für Hinweise.

Gruß,

Pampel
 
  • #2
Hi Pampel,

sollen die Klammern mit markiert werden oder nur alles zwischen den Klammern ?

Kommen diese Klammern innerhalb des  Text auch vor oder kann man danach suchen ?

Wenn Sie innerhalb des Textes vorkommen, wie kann man sie von den gesuchten Klammern unterscheiden ?


Gruß Matjes :)
 
  • #3
Hallo,

die Klammern sollen mit markiert werden. Vor die erste Klammer zu kommen ist nicht das Problem. Aber zum richtigen Ende zu kommen. Wenn das Absatzzeichen in der neuen Zeile steht, dann bekomme ich mit UMSCHALT+Ende eben nur die erste Zeile in die Auswahl.

Danke für Hinweise.

Gruß,

Pampel
 
  • #4
Hi Pampel,

hab dir zwei Makros gestrickt:

a) MarkierungBisZurNaechstenEckigeKlammernZuErweitern()
Erweiter die bestehende Markeirung bis einschließlich der nächsten eckigen Klammer zu (]).

b) NaechstenBereichEckigeKlammernMarkieren()
Sucht nach der momentanen Selektion den nächsten Bereich mit eckige Klammer auf ([),  eckige Klammer zu (]) und markiert ihn.

Gruß Matjes  :)
Code:
'***********************************************************
Sub MarkierungBisZurNaechstenEckigeKlammernZuErweitern()
 ->Erweiter die bestehende Markeirung bis einschliesslich
 ->zur nächsten eckigen Klammer zu (]).
'***********************************************************
  
  Dim pos_end As Long, r As Range
  
 ->markieten Bereich merken
  Set r = Selection.Range
  
 ->die Selection auf das Ende zusammenschrufen lassen
  Selection.Collapse Direction:=wdCollapseEnd
  
 ->Position der nächsten eckigen Klammer zu bestimmen
  With Selection.Find
    .Forward = True: .ClearFormatting
    .Execute FindText:=]
  End With
  pos_end = Selection.End

 ->Markierung
  If (r.Start < pos_end) And (r.End <> pos_end) Then
    ActiveDocument.Range(Start:=r.Start, End:=pos_end).Select
  Else
   ->alte Markeirung wieder herstellen
    r.Select
    MsgBox (keine->eckige Klammer zu' gefunden)
  End If
  Set r = Nothing
End Sub
'***********************************************************
Sub NaechstenBereichEckigeKlammernMarkieren()
 ->Sucht nach der momentane Selektion
 ->den nächsten Bereich mit eckige Klammer auf ([),
 ->eckige Klammer zu (]) und markiert ihn.
'***********************************************************
  
  Dim pos_anf As Long, pos_end As Long
  
 ->die vorherige Selection auf das Ende
 ->zusammenschrufen lassen
  Selection.Collapse Direction:=wdCollapseEnd
  
 ->Position der nächsten eckigen Klammer auf bestimmen
  With Selection.Find
    .Forward = True: .ClearFormatting
    .Execute FindText:=[
  End With
  pos_anf = Selection.Start
  
 ->Position der nächsten eckigen Klammer auf bestimmen
  Selection.Collapse Direction:=wdCollapseEnd
  With Selection.Find
    .Forward = True: .ClearFormatting
    .Execute FindText:=]
  End With
  pos_end = Selection.End
  
 ->Markierung
  If (pos_anf < pos_end) And (pos_anf + 1 <> pos_end) Then
    ActiveDocument.Range(Start:=pos_anf, End:=pos_end).Select
  Else
    ActiveDocument.Range(Start:=pos_anf, End:=pos_anf + 1).Select
    MsgBox (keine->eckige Klammer zu' gefunden)
  End If
End Sub
 
  • #5
Hallo,

und vielen Dank für Deine Mühen. Werde das gleich morgen mal ausprobieren.

Viele Grüße,

Pampel
 
Thema:

Word - Markieren in einem Makro

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben