- Katılım
- 4 Kasım 2004
- Mesajlar
- 3
YENÃ TL ve KURUÃA ÇEVÃR
Selamlar... Var olan bir makro üzerinde biraz kafa yorarak RAKAMLA girilen YTL cinsinden değeri YAZIYA çevirmeyi başardım ama bir sorunla karşılaştım. Virgülden sonraki onlu değerleri birlik değer olarak görüyor. Ã?rneğin 10,50 değerini yazıya çevirirken 10 YTL 5 Kuruş olarak görüyor. Ancak 10,58 gibi bir değer 10 YTL 58 Kuruş olarak çevrilebiliyor. Virgülden sonra 10'lu değerler; niçin birlik değer olarak gözüküyordur... Kod aşağıda... İYİ BAYRAMLAR...
=====
Function KURUS(Sayi#)
ReDim birler$(10), onlar$(10), basamak$(5)
birler$(0) = "": birler$(1) = "Bir"
birler$(2) = "İki": birler$(3) = "Üç"
birler$(4) = "Dört": birler$(5) = "Beş"
birler$(6) = "Altı": birler$(7) = "Yedi"
birler$(8) = "Sekiz": birler$(9) = "Dokuz"
onlar$(0) = "": onlar$(1) = "On"
onlar$(2) = "Yirmi": onlar$(3) = "Otuz"
onlar$(4) = "Kırk": onlar$(5) = "Elli"
onlar$(6) = "Altmış": onlar$(7) = "Yetmiş"
onlar$(8) = "Seksen": onlar$(9) = "Doksan"
basamak$(1) = "": basamak$(2) = "Bin"
basamak$(3) = "Milyon": basamak$(4) = "Milyar"
basamak$(5) = "Trilyon"
virgul2$ = "": cevap$ = "": onda$ = ""
Say$ = Str$(Sayi#)
virgul% = InStr(2, Say$, ".")
If virgul% Then
Say$ = Right$(Say$, Len(Say$) - virgul%)
Select Case Len(Say$)
Case 2: onda$ = "Kuruş"
Case 1: onda$ = "Kuruş"
End Select
GoSub cevir
virgul2$ = " YTL. " + cevap$ + " " + onda$
cevap$ = ""
Say$ = Str$(Sayi#)
Say$ = Left(Say$, virgul% - 1)
End If
GoSub cevir
KURUS = cevap$ + virgul2$
Exit Function
cevir:
x% = Len(Say$)
Say$ = String$(3 - (x% - Int(x% / 3) * 3), 48) + Say$
x% = Len(Say$) / 3
For i% = 1 To x%
uclu$ = Mid$(Say$, Len(Say$) - i% * 3 + 1, 3)
Y% = Val(Mid$(uclu$, 1, 1))
O% = Val(Mid$(uclu$, 2, 1))
b% = Val(Mid$(uclu$, 3, 1))
yazi$ = ""
If Y% <> 0 Then
If Y% > 1 Then yazi$ = birler$(Y%)
yazi$ = yazi$ + "Yüz"
End If
yazi$ = yazi$ + onlar$(O%) + birler$(b%)
If yazi$ <> "" Then
If LCase(yazi$) = "bir" And i% = 2 Then yazi$ = ""
cevap$ = yazi$ + basamak$(i%) + cevap$
End If
Next i%
Return
End Function
Selamlar... Var olan bir makro üzerinde biraz kafa yorarak RAKAMLA girilen YTL cinsinden değeri YAZIYA çevirmeyi başardım ama bir sorunla karşılaştım. Virgülden sonraki onlu değerleri birlik değer olarak görüyor. Ã?rneğin 10,50 değerini yazıya çevirirken 10 YTL 5 Kuruş olarak görüyor. Ancak 10,58 gibi bir değer 10 YTL 58 Kuruş olarak çevrilebiliyor. Virgülden sonra 10'lu değerler; niçin birlik değer olarak gözüküyordur... Kod aşağıda... İYİ BAYRAMLAR...
=====
Function KURUS(Sayi#)
ReDim birler$(10), onlar$(10), basamak$(5)
birler$(0) = "": birler$(1) = "Bir"
birler$(2) = "İki": birler$(3) = "Üç"
birler$(4) = "Dört": birler$(5) = "Beş"
birler$(6) = "Altı": birler$(7) = "Yedi"
birler$(8) = "Sekiz": birler$(9) = "Dokuz"
onlar$(0) = "": onlar$(1) = "On"
onlar$(2) = "Yirmi": onlar$(3) = "Otuz"
onlar$(4) = "Kırk": onlar$(5) = "Elli"
onlar$(6) = "Altmış": onlar$(7) = "Yetmiş"
onlar$(8) = "Seksen": onlar$(9) = "Doksan"
basamak$(1) = "": basamak$(2) = "Bin"
basamak$(3) = "Milyon": basamak$(4) = "Milyar"
basamak$(5) = "Trilyon"
virgul2$ = "": cevap$ = "": onda$ = ""
Say$ = Str$(Sayi#)
virgul% = InStr(2, Say$, ".")
If virgul% Then
Say$ = Right$(Say$, Len(Say$) - virgul%)
Select Case Len(Say$)
Case 2: onda$ = "Kuruş"
Case 1: onda$ = "Kuruş"
End Select
GoSub cevir
virgul2$ = " YTL. " + cevap$ + " " + onda$
cevap$ = ""
Say$ = Str$(Sayi#)
Say$ = Left(Say$, virgul% - 1)
End If
GoSub cevir
KURUS = cevap$ + virgul2$
Exit Function
cevir:
x% = Len(Say$)
Say$ = String$(3 - (x% - Int(x% / 3) * 3), 48) + Say$
x% = Len(Say$) / 3
For i% = 1 To x%
uclu$ = Mid$(Say$, Len(Say$) - i% * 3 + 1, 3)
Y% = Val(Mid$(uclu$, 1, 1))
O% = Val(Mid$(uclu$, 2, 1))
b% = Val(Mid$(uclu$, 3, 1))
yazi$ = ""
If Y% <> 0 Then
If Y% > 1 Then yazi$ = birler$(Y%)
yazi$ = yazi$ + "Yüz"
End If
yazi$ = yazi$ + onlar$(O%) + birler$(b%)
If yazi$ <> "" Then
If LCase(yazi$) = "bir" And i% = 2 Then yazi$ = ""
cevap$ = yazi$ + basamak$(i%) + cevap$
End If
Next i%
Return
End Function