Bradley hat ein Dokument, das im Text viele römische Ziffern enthält. Er braucht eine einfache Möglichkeit, diese Tausenden von römischen Ziffern in Arabisch umzuwandeln.

Dies sind keine Felder irgendeiner Art; Sie werden einfach als römische Ziffern in Text eingegeben. Er fragt sich, ob es eine Möglichkeit gibt, sie leicht in ihre arabischen Entsprechungen umzuwandeln.

Leider gibt es in Word keine Funktion, die römische Ziffern in Arabisch konvertiert. Wenn Sie möchten, können Sie einfach mit Suchen und Ersetzen nach römischen Ziffern suchen, aber Sie müssten für jede einzelne eine individuelle Suche durchführen. Sie können eine Platzhaltersuche verwenden, um nach einem Wort zu suchen, das ausschließlich aus römischen Großbuchstaben besteht, was die Suche erheblich vereinfachen würde. Sie müssen lediglich nach „<[CDILMVX] \ {1,}>“ suchen (ohne Anführungszeichen) und sicherstellen, dass das Kontrollkästchen Platzhalter verwenden aktiviert ist. Wenn Sie auf Weiter suchen klicken, befindet sich die nächste römische Ziffer, und Sie können sie manuell in ihre arabische Entsprechung ändern.

Eine andere Möglichkeit, die Konvertierung durchzuführen, ist ein Makro. Sie können ein Makro erstellen, das jedes Wort in Ihrem Dokument betrachtet und versucht, festzustellen, ob es ein Kandidat für das Bestehen aus römischen Ziffern ist. Es kann jedoch zu Fehlalarmen kommen, insbesondere wenn Ihr Dokument Akronyme enthält, die als römische Ziffern verwechselt werden können. (Wenn Sie beispielsweise das Akronym CC für Kreditkarte verwenden, kann dies als römische Ziffer für 200 angesehen werden.)

Der folgende Satz von Makros durchläuft jedes der Wörter in einem Dokument. Wenn das Wort nur römische Ziffern enthält (I, V, X, L, C, D und M), wird der Benutzer gefragt, ob das Makro das konvertieren soll Ziffern.

Sub ConvertRoman()

Dim wrdX     Dim wrd As String     Dim tstSW As Boolean     Dim J As Long

For Each wrdX In ActiveDocument.Words         wrd = UCase(Trim(wrdX))

If wrd = "" Or wrd = "I" Or wrd = vbCr Then             tstSW = False         Else             tstSW = True         End If         For J = 1 To Len(wrd)

If InStr("MDCLXVI",Mid(wrd, J, 1)) = 0 Then                 tstSW = False                 Exit For             End If         Next J

If tstSW Then             wrdX.Select             Selection.MoveLeft unit:=wdCharacter, _               Count:=Len(wrdX) - Len(wrd), _               Extend:=wdExtend             J = MsgBox("Convert " & wrd & " to Arabic", vbYesNoCancel)

If J = vbCancel Then Exit Sub             If J = vbYes Then Selection.TypeText Text:=RomanToArabic(wrd)

End If     Next wrdX End Sub
Function RomanToArabic(Rm As String) As String     Dim J As Long     Dim ab As Long     Dim cc As Long     Dim dd As Long

ab = 0     Rm = Trim(Rm)

J = 1     Do         cc = GetValue(Mid(Rm, J, 1))

dd = GetValue(Mid(Rm, J + 1, 1))

If cc < dd Then             ab = ab + dd - cc             J = J + 1         Else             ab = ab + cc         End If         J = J + 1     Loop Until J >= Len(Rm)

If J = Len(Rm) Then         ab = ab + GetValue(Mid(Rm, J, 1))

End If     RomanToArabic = Trim(Str(ab))

End Function
Function GetValue(ss As String) As Long     Dim Cde()

Dim Cvalue()

Dim J As Long

Cde = Array("M", "D", "C", "L", "X", "V", "I")

Cvalue = Array(1000, 500, 100, 50, 10, 5, 1)



For J = 0 To 6         If ss = Cde(J) Then             GetValue = Cvalue(J)

Exit Function         End If     Next J     GetValue = 999999 End Function

Da ein Großbuchstabe I ein sehr häufiges Wort im Text ist, werden die Makros nicht bei jedem von ihnen angehalten, um zu bestimmen, ob eine Konvertierung durchgeführt werden soll.

Wenn das Großbuchstaben I jedoch Teil eines längeren Wortes ist, das nur aus römischen Ziffern besteht (z. B. XLVII), wird es als Konvertierungskandidat betrachtet. Die Makros setzen auch voraus, dass alle Ihre römischen Ziffern in Großbuchstaben geschrieben sind.

_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 (12509) gilt für Microsoft Word 97, 2000, 2002 und 2003. Sie finden eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Word (Word 2007) und später) hier: