Merhaba,
Forumda yaptığım aramalarda sayıyı yazıya çevirme konusunda birçok örnek buldum. Bana en kolay gelen örneği aldım ama sayıları yanlış yazıyor. Örneğin 75 sayısını Yetmişdört olarak yazıyor.
Koddaki hatayı bulamadım. Hatayı düzeltme konusunda yardımcı olabilir misiniz?
Teşekkürler.
Forumda yaptığım aramalarda sayıyı yazıya çevirme konusunda birçok örnek buldum. Bana en kolay gelen örneği aldım ama sayıları yanlış yazıyor. Örneğin 75 sayısını Yetmişdört olarak yazıyor.
Koddaki hatayı bulamadım. Hatayı düzeltme konusunda yardımcı olabilir misiniz?
Teşekkürler.
Kod:
Public Function Yaz(AA)
Dim AAStr As String
Dim BB As String
If Not IsNumeric(AA) Then GoTo SayiDegil
AAStr = Format(Abs(AA), "0.00")
BB = Left(AAStr, Len(AAStr) - 3)
Yaz = IIf(AA < 0, "Eksi ", "") & Cevir(BB)
Exit Function
SayiDegil:
Yaz = "GİRİLEN DEĞER SAYI DEĞİL!"
End Function
Private Function Cevir(SayiStr As String) As String
Dim Rakam(15)
Dim c(3), Sonuc, e
Birler = Array("", "bir", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz", "dokuz")
Onlar = Array("", "on", "yirmi", "otuz", "kırk", "elli", "altmış", "yetmiş", "seksen", "doksan")
Binler = Array("trilyon", "milyar", "milyon", "bin", "")
SayiStr = String(15 - Len(SayiStr), "0") + SayiStr
For i = 1 To 15
Rakam(i) = Val(Mid$(SayiStr, i, 1))
Next i
Sonuc = ""
For i = 0 To 4
c(1) = Rakam(i * 3 + 1)
c(2) = Rakam(i * 3 + 2)
c(3) = Rakam(i * 3 + 3)
If c(1) = 0 Then
e = ""
ElseIf c(1) = 1 Then
e = "yüz"
Else
e = Birler(c(1)) + "yüz"
End If
e = e + Onlar(c(2)) + Birler(c(3))
If e <> "" Then e = e + Binler(i)
If (i = 3) And (e = "birbin") Then e = "bin"
Sonuc = Sonuc + e
Next i
'If Sonuc = "" Then Sonuc = "00"
If Sonuc = "" Then Sonuc = " "
Cevir = UCase(Mid(Sonuc, 1, 1)) + Mid(Sonuc, 2, Len(Sonuc) - 1)
End Function