Stephen fragte, ob es möglich sei, das Format der von Word eingefügten Querverweise zu steuern. Wenn er ein Etikett und eine Nummer wie Tabelle 1 oder Abbildung 12 einfügt, möchte er das Etikett in Kleinbuchstaben (Tabelle, Abbildung) und einen nicht unterbrechenden Abstand zwischen dem Etikett und der Nummer.

Es gibt keine Möglichkeit, diese Art der Querverweisformatierung in Word zu steuern. Natürlich können Sie die Querverweise nach dem Platzieren manuell ändern, aber jedes Mal, wenn Sie Felder aktualisieren, wird das von Word gewählte Originalformat für sie verwendet. Es gibt einige makrobasierte Lösungen, die Sie ausprobieren können. Die erste Lösung ändert die tatsächlichen Feldcodes, die für das Feld verwendet werden:

Sub FieldRefChanges1()

On Error Resume Next     Dim oStoryRng As Range     Dim oFld As Field

For Each oStoryRng In ActiveDocument.StoryRanges         For Each oFld In oStoryRng.Fields             If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then                 'add format switch with lowercase option to field codes                 oFld.Code.Text = oFld.Code.Text & "\* lower "

'updates the field results to display the new format                 oFld.Update             End If         Next oFld     Next oStoryRng End Sub

Das Makro enthält einige verschachtelte For-Schleifen. Der erste Schritt geht durch jede Geschichte im Dokument und der zweite geht durch jedes Feld in jeder Geschichte. Eine If-Anweisung wird dann verwendet, um sicherzustellen, dass das Feld ein REF-Feld ist (die Art, die für Querverweise verwendet wird) und dass das Ergebnis des Feldes zwei oder weniger Wörter sind (wie in Tabelle 1 oder Abbildung 12).

Wenn diese Kriterien erfüllt sind, ändert das Makro den tatsächlichen Feldcode und fügt den Schalter hinzu, der dazu führt, dass das Feld in Kleinbuchstaben angezeigt wird.

Dieses Makro weist einige Nachteile auf. Wenn Sie es mehrmals ausführen, wird zunächst der untere Schalter \ * mehrmals zu den REF-Feldern hinzugefügt. Zweitens ändert das Makro den Platz in den Feldergebnissen nicht in einen nicht unterbrechenden Raum.

Um beide Probleme zu lösen, ändern Sie einfach das Makro so, dass es den manuellen Prozess automatisiert, den Sie zum Ändern der Makroergebnisse durchlaufen würden.

Sub FieldRefChanges2()

On Error Resume Next     Dim oStoryRng As Range     Dim oFld As Field     Dim sTemp As String     Dim J As String

For Each oStoryRng In ActiveDocument.StoryRanges         For Each oFld In oStoryRng.Fields             If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then                 sTemp = oFld.Result.Text                 sTemp = LCase(sTemp)

J = InStr(sTemp, " ")

sTemp = Left(sTemp, J - 1) & Chr(160) & _                   Mid(sTemp, J + 1, Len(sTemp) - J)

oFld.Result.Text = sTemp             End If         Next oFld     Next oStoryRng End Sub

Dieses Makro ist im Wesentlichen dasselbe wie das vorherige, außer dass es streng mit dem Ergebnistext für das Feld arbeitet. Der Text wird der Variablen sTemp zugewiesen, die dann in Kleinbuchstaben konvertiert wird. Die Position des Raums wird bestimmt und durch einen nicht unterbrechenden Raum ersetzt. Das Ergebnis wird dann wieder in den Ergebnistext für das Feld eingefügt.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.

(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (8479) gilt für Microsoft Word 2007, 2010, 2013, 2016, 2019 und Word in Office 365. Eine Version dieses Tipps finden Sie für ältere Menüoberfläche von Word hier: