VB / VBA - Μετατροπή του ρωμαϊκού αριθμού σε αραβικό

Αυτές οι λειτουργίες επιτρέπουν τη μετατροπή αριθμών που εκφράζονται σε ρωμαϊκά "γράμματα" (MCMLXIX) σε μορφή αραβικών αριθμών (1969). Αυτές οι διαδικασίες είναι διαθέσιμες ως προσαρμοσμένη λειτουργία για το Excel και στο VBA για ένα Userform. Ο κωδικός VBA είναι συμβατός με το VB6.

Λειτουργία για το Excel

Επικολλήστε τον παρακάτω κώδικα σε μια γενική ενότητα, π.χ. Ενότητα1.

 Dim Rm Ως Δημόσια Λειτουργία String RomainArabe (C As Range) ως ακέραιος Dim TB Dim Αραβικός ως ακέραιος Dim i ως byte, A ως ακέραιο, Utb ως ακέραιο Αν C = "" Στη συνέχεια RomainArabe = 0: Exit Λειτουργία ReDim TB (0) (I), όπου i <= Len (Rm) και R (= Rm) (Utb) i = i * A Utb (Utb) = A * ValeurLettre (Mid (Rm, i, 1)) Debug.Print TB (Utb) = TB (i + 1) Τότε Αραβικό = Αραβικό + TB (i + 1) - TB (i) i = i + 1 Τέλος Αν Debug.Print Αραβικό Wend RomainArabe = Αραβική Λειτουργία Λειτουργίας End NBlettre (Deb ως byte) Ως byte Dim i ως Ακαθάριστο, L ως String NBlettre = 1 = L = Mid (Rm, Deb, 1) Για i = Deb + 1 Σε Len (Rm) Αν Mid (Rm, i, 1) = L Στη συνέχεια NBlettre = NBlettre + 1 Έξοδος Λειτουργία Τέλος Αν Λειτουργία Next End Λειτουργία ValeurLettre L ως συμβολοσειρά ) Ως αθροιστής Dim Romain, Arabe, i Ως Byte Romain = Array ("I", "V", "X", "L", "C", "D", 10, 50, 100, 500, 1000) Για i = 0 έως 6 Αν L = Romain (i) Στη συνέχεια ValeurLettre = Arabe (i) 

Παράδειγμα ενός τύπου που πρέπει να τοποθετηθεί σε ένα υπολογιστικό φύλλο Excel

 '= ΡωμαϊκήΑραβική (Α3) 

Κωδικοί VBA / VB6

Επικολλήστε τον παρακάτω κώδικα σε μια γενική ενότητα, π.χ. Module1 για VBA ή σε Module.bas για VB6

 (0) i = 1: Utb = 1 Rm = Αντικαταστήστε (Rm, Rm, Rm) Αντικαταστήστε το Rm, "), " ", "), "supprime les espaces éventuels Rm = UCase (Rm)" με κεφαλαία και nécessaire Ενώ i <= Len (Rm) TB (Utb) = A * ValeurLettre (Mid (Rm, i, 1)) Debug.Print TB (Utb) i = i + A Utb = Utb +1 Wend ReDim Διατήρηση TB (TB) Αν η TB (i) <TB (i + 1) Τότε Arab = Arab + TB (i + 1) Τέλος Αν Debug.Print Αραβικό Wend TraduitRomain = Λειτουργία αραβικού τερματισμού Ιδιωτική συνάρτηση NBlettre (Deb As Byte) Ως byte Dim i ως ακέραιο, L ως συμβολοσειρά NBlettre = 1 L = Mid (Rm, Deb, 1) Για i = Deb + 1 To (Rm) Εάν το Mid (Rm, i, 1) = L Στη συνέχεια NBlettre = NBlettre + 1 Έξοδος Λειτουργία Τέλος Αν Λειτουργία Επόμενης Λειτουργίας Ιδιωτική Λειτουργία ValeurLettre (L ως String) = Array ("I", "V", "X", "L", "C", "D", "M") Arabe = Array (1, 5, 10, 50, 100, 500, 1000) Για i = 0 έως 6 Αν L = Romain (i) Στη συνέχεια ValeurLettre = Arabe (i) Έξοδος Λειτουργία Τέλος Αν Next i End Λειτουργία 

Παράδειγμα κλήσης λειτουργίας:

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

Προηγούμενο Άρθρο Επόμενο Άρθρο

Οι Καλύτερες Συμβουλές