VB / VBA - Konvertiert römische Zahlen in Arabisch

Diese Funktionen ermöglichen die Umwandlung von Zahlen, die in römischen "Buchstaben" (MCMLXIX) ausgedrückt werden, in arabische Zahlenformate (1969). Diese Verfahren sind als benutzerdefinierte Funktion für Excel und in VBA für ein Benutzerformular verfügbar. VBA-Code ist mit VB6 kompatibel.

Funktion für Excel

Fügen Sie den folgenden Code in ein allgemeines Modul ein, z. B. Module1.

 Dim Rm As String Öffentliche Funktion RomainArabe (C As Range) As Integer Dim TB Dim Arab As Integer Dim i As Byte, A As Integer, Utb As Integer Wenn C = "", dann RomainArabe = 0: Exit Function ReDim TB (0) Application .Volatile i = 1: Utb = 1: Arab = 0 Rm = Ersetzen (C, "", "") Sie können TB (Utb) A = NBlettre (i) TB (Utb) = A * ValeurLettre (Mid (Rm, i, 1)) Debug.Print TB (Utb) i = i + A Utb = Utb + 1 Wend ReDim TB erhalten (Utb): i = 1, während i <UBound (TB) Wenn TB (i) <TB (i + 1), dann Arab = Arab + TB (i + 1) - TB (i) i = i + 2 Sonst Arab = Arab + TB (i) i = i + 1 Ende wenn Debug.Print Arab Wend RomainArabe = Arab Ende Funktion Funktion NBlettre (Deb als Byte) As Byte Dim i As Integer, L As String NBlettre = 1 L = Mid (Rm, Deb, 1) Für i = Deb + 1 bis Len (Rm) Wenn Mid (Rm, i, 1) = L, dann ist NBlettre = NBlettre + 1 Andernfalls wird die Funktion beendet, wenn die Funktion am nächsten Ende endet. L Als Zeichenfolge ) Als Integer Dim Romain, Arabe, i Als Byte Romain = Array ("I", "V", "X", "L", "C", "D", "M") Arabe = Array (1, 5, 10, 50, 100, 500, 1000) Für i = 0 bis 6 Wenn L = Romain (i), dann ValeurLettre = Arabe (i) Funktion beenden, wenn nächste i Funktion beenden 

Beispiel einer Formel, die in eine Excel-Tabelle eingefügt werden soll

 '= RomainArabic (A3) 

VBA / VB6-Codes

Fügen Sie den folgenden Code in ein allgemeines Modul ein, z. B. Module1 für VBA oder Module.bas für VB6

 Option Explicit Dim Rm As String Öffentliche Funktion TraduitRomain (Rm) As Integer Dim TB Dim Arab As Integer Dim i As Byte, A As Integer, Utb As Integer ReDim TB (0) i = 1: Utb = 1 Rm = Replace (Rm, "", "") 'supprime les espaces éventuels Rm = UCase (Rm)' met en majuscule si nécessaire TB (Utb) = A * ValeurLettre (Mid (Rm, i, 1)) Debug.Print TB (Utb) i = i + A Utb = Utb + 1 Wend ReDim TB erhalten (Utb): i = 1 Solange i <UBound (TB) Wenn TB (i) <TB (i + 1), dann ist Arabisch = Arabisch + TB (i + 1) - TB (i) i = i + 2, ansonsten Arabisch = Arabisch + TB (i) i = i + 1 End If Debug.Print Arab Wend TraduitRomain = Arab End Function Private Funktion NBlettre (Deb als Byte) As Byte Dim i As Integer, L As String NBlettre = 1 L = Mid (Rm, Deb, 1) For i = Deb + 1 To Len (Rm) Wenn Mid (Rm, i, 1) = L Dann NBlettre = NBlettre + 1 Andernfalls Beenden der Funktion End If Next End-Funktion Private Funktion ValeurLettre (L As String) Als Ganzzahl Dim Romain, Arabe, i As Byte Romain = Array ("I", "V", "X", "L", "C", "D", "M") Arabe = Array (1, 5, 10, 50, 100, 500, 1000) For i = 0 bis 6 Wenn L = Romain (i), dann ValeurLettre = Arabe (i) Funktion beenden, wenn nächstes i Funktion beenden 

Beispiel eines Funktionsaufrufs:

 Sub AppelEnArabic () Dim R As String R = "MMMCMIC" MsgBox R und "en chiffre arabe donnerait" & TraduitRomain (R) End Sub 

Vorherige Artikel Nächster Artikel

Top-Tipps