1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

Problemstellung:

Für 32Bit und 64Bit Office Versionen

Wie kann ich aus einer römische Zahl eine Zahl? 

Public Function Romanum2Dec(ByVal sRomZahl As String) As Long
    Dim a As String, b  As String, c As String
    Dim i  As Long
    Dim erg As Long
    
    If Len(sRomZahl) < 1 Then Exit Function
    For i = 1 To Len(sRomZahl)
       b = Mid(sRomZahl, i, 1)
       Select Case a
          Case "I": If InStr("VXLCDM", b) Then erg = erg - 2
          Case "V": If InStr("XLCDM", b) Then erg = erg - 10
          Case "X": If InStr("LCDM", b) Then erg = erg - 20
          Case "L": If InStr("CDM", b) Then erg = erg - 100
          Case "C": If InStr("DM", b) Then erg = erg - 200
          Case "D": If b = "M" Then erg = erg - 1000
       End Select
       Select Case UCase(b)
          Case "I"
              erg = erg + 1
          Case "V"
              erg = erg + 5
          Case "X"
              erg = erg + 10
          Case "L"
              erg = erg + 50
          Case "C"
              erg = erg + 100
          Case "D"
              erg = erg + 500
          Case "M"
              erg = erg + 1000
          Case Else
             Exit Function
       End Select
       a = b
    Next
    Romanum2Dec = erg
End Function

Aufruf:

Dim x As Long
x = Romanum2Dec("MMIV")

würde die römische Zahl "MMIV" in 2004 umwandeln

 

Ähnliche Artikel