![]() |
||
![]() |
Bugfix: Schriftgr÷▀e in einem Absatz global ΣndernIn CHIP 8/99 fragte Leser Peter Nowak nach einer M÷glichkeit, verschiedene Schriftgr÷▀en eines Textbereichs mit einem Schritt zu vergr÷▀ern oder zu verkleinern. Bei der Antwort sind unserem Programmierer die Pferde durchgegangen: Weil er zusΣtzlich den Komfort einer Listbox bieten wollte, ignorierte er die sehr wohl vorhandenen Word-Funktionen und ersann ein kunstvolles Makro. Mit Recht haben uns viele Leser auf die Standard-Shortcuts hingewiesen: Mit [Strg]+[8] und [Strg]+[9] lΣ▀t sich fⁿr einen markierten Bereich die Schriftgr÷▀e punktweise verkleinern oder vergr÷▀ern. [Strg]+[<] und [Strg] +[Shift]+[>] gehen auch, allerdings pa▀t Word dabei die Schrittweite dynamisch an die Schriftgr÷▀e an. Wir danken fⁿr Ihre zahlreichen Reaktionen und bemⁿhen uns selbstverstΣndlich, Patzer kⁿnftig zu vermeiden. Die L÷sung per Dialogfenster finden wir jedoch immer noch komfortabel - daher nochmals das Makro in ⁿberarbeiteter Version. Starten Sie mit ╗Extras | Makro | Visual-Basic Editor½ den Editor und fⁿgen der Vorlage NORMAL.DOT mit ╗Einfⁿgen | Modul½ ein neues Modul und diesem mit ╗Einfⁿgen | Prozedur½ eine neue Prozedur hinzu. Dort geben Sie die Anweisungen aus dem Listing links ein oder kopieren sie aus der Textdatei, die Sie auf der Heft-CD finden. Mit der ersten Anweisung ╗ActiveDocument½ fⁿgen Sie eine Textmarke an der aktuellen Cursor-Position ein. Die folgende Anweisung setzt die Einfⁿgemarke an den Anfang des Dokuments. Anschlie▀end definieren Sie eine Konstante fⁿr eine Liste der Zeichen. Die ╗For Each½-Schleife durchlΣuft nun diese Liste, markiert jedes Zeichen, erh÷ht die Schriftgr÷▀en um den angegebenen Wert und verschiebt die Einfⁿgemarke um ein Zeichen nach rechts. Die vorletzte Anweisung setzt die Einfⁿgemarke an die Ausgangsposition zurⁿck, die letzte Anweisung entfernt die Textmarke wieder. Listing: inputbox Sub IndivFormat () Dim Mldg, Titel, Voreinstellung, Wert Mldg = "Wie soll die Gr÷▀e geΣndert werden?" Titel = "Schriftgr÷▀e Σndern" Voreinstellung = "2" Wert = InputBox (Mldg, Titel, Voreinstellung) ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="AktPos" Selection.HomeKey Unit:=wdStory Set ListOfCharacters = ActiveDocument.Characters For Each i In ListOfCharacters Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend Selection.Font.Size = Selection.Font.Size + Wert Selection.MoveRight Unit:=wdCharacter, Count:=1 Next i Selection.GoTo What:=wdGoToBookmark ActiveDocument.Bookmarks ("AktPos"). Delete End Sub |
![]() |