VB / VBA - Roman sayısını Arapça'ya çevir

Bu işlevler, Roma "harfleri" (MCMLXIX) ile ifade edilen sayıların Arapça sayı biçiminde (1969) dönüştürülmesini sağlar. Bu prosedürler Excel için özel bir fonksiyon olarak ve bir Userform için VBA'da mevcuttur. VBA kodu VB6 ile uyumludur.

Excel için işlev

Aşağıdaki kodu genel bir modüle yapıştırın, örn. Modül1.

 Dize Kamusal İşlev Olarak Dim Rm RomainArabe (C Aralığı), Tam Sayı Olarak Dim TB Dim Arap Tam Sayı Olarak Dim i Bay, Olarak Tam Sayı, Tam Sayı Olarak Utb C = "" Sonra RomainArabe = 0: İşlevden Çıkma ReDim TB (0) Uygulaması .Volatile i = 1: Utb = 1: Arab = 0 Rm = Değiştir (C, "", "") 'ek les les espaces éventuels Rm = UCase (Rm)' i göreceli olarak eşittir ve <= Len (Rm) ReDim Korun TBC (Utb) A = NBlettre (i) TB (Utb) = A * ValeurLettre (Orta (Rm, i, 1)) Hata Ayıkla. Baskı TB (Utb) i = i + A Utb = Utb + 1 Wend ReDim TB'yi Koru (Utb): i = 1 iken i <UBound (TB) ise TB (i) <TB (i + 1) Sonra Arap = Arap + TB (i + 1) - TB (i) i = i + 2 Başka Arap = Arap + TB (i) i = i + 1 Hata Ayıklama Sırasında Bitir.Print Arap Wend RomainArabe = Arap Sonu İşlev İşlevi NBlettre (Bayt Olarak Deb) Bayt Olarak Dim i Tam Sayı, L Dize Olarak NBlettre = 1 L = Orta (Rm, Deb, 1) i = Deb + 1 - Len (Rm) için Mid (Rm, i, 1) = L Sonra NBlettre = NBlettre + 1 Başka Çıkış Fonksiyonu Sonraki Bitiş Fonksiyonu Fonksiyonu Bitirir ValeurLettre ( Dize olarak L ) Tamsayı Dim Romain, Arabe, i Byte Romain = Array ("I", "V", "X", "L", "C", "D", "M") Arabe = Array (1, 5), 10, 50, 100, 500, 1000) i = 0 - 6 için L = Romain (i) Öyleyse ValeurLettre = Arabe (i) Çık İşlev Son 

Excel elektronik tablosuna yerleştirilecek formül örneği

 '= RomainArabic (A3) 

VBA / VB6 Kodları

Aşağıdaki kodu genel bir modüle, örneğin VBA için Module1 veya VB6 için Module.bas içine yapıştırın

 Seçenek Açık Dim Rm, Dize Ortak İşlev TraduitRomain (Rm) Tamsayı Olarak Dim TB Dim Arap Tamsayı Olarak Dim i Bayt, A Tamsayı Olarak, Tamsayı Olarak UtB ReDim TB (0) i = 1: Utb = 1 Rm = Değiştir (Rm, "", "") 'ek olarak, özellikle Rm = UCase (Rm)' e eşlik eder, i <= Len (Rm) 'in karakteristiği bir ReDim Korun TBC (Utb) A = NBlettre (i) TB (Utb) = A * ValeurLettre (Orta (Rm, i, 1)) Hata Ayıklama. Baskı TB (Utb) i = i + A Utb = Utb + 1 Wend ReDim Koru TB (Utb): i = 1 iken <UBound (TB) TB (i) <TB (i + 1) ise Arap = Arap + TB (i + 1) - TB (i) i = i + 2 Başka Arap = Arap + TB (i) i = i + 1 Sonu Debug.Print Arab Wend TraduitRomain = Arab Son İşlev Özel İşlev NBlettre (Bayt Olarak Deb) Bayt Boyut i Tamsayı, L String NBlettre = 1 L = Orta (Rm, Deb, 1) i = Deb + 1 için Len (Rm) Orta (Rm, i, 1) = L Sonra NBlettre = NBlettre + 1 Başka Çıkış Fonksiyonu Bitişi Sonraki Sıradaki Fonksiyonu Özel Bitiş Fonksiyonu ValeurLettre (L Olarak Dize) Tam Sayı Dim Romain, Arabe, i By Romain = Dizi ("I", "V", "X", "L", "C", "D", "M") Arabe = Dizi (1, 5, 10, 50, 100, 500, 1000) i = 0 ila 6 ise L = Romain (i) Öyleyse ValeurLettre = Arabe (i) Çık İşlev Son 

Fonksiyon çağrısı örneği:

 Alt AppelEnArabic () Dim R As Dize R = "MMMCMIC" MsgBox R & "en nihayet arabe donnerait" ve TraduitRomain (R) End Sub 

Önceki Makale Sonraki Makale

En Ipuçları