Paracevir'de Bir Sorununu Nasıl Yaparız

Katılım
12 Temmuz 2007
Mesajlar
19
Excel Vers. ve Dili
ACCESS 2003
Merhaba Arkadaşlar;
Access'te paracevir'de bir sorun var,bunu çözebilirmiyiz.Sorun Şu; rakam olarak 1250 TL yi BİNİKİYÜZELİ TL olması gerekirken BİRBİNİKİYÜZELİ TL olarak yapıyor. Diğer rakamlarda değil sadece 1000 den 1999 olan rakamlar arasında..Bu önüne konan biri nasıl kaldırabiliriz.

Public Function ParaCevir(Para)
Dim ParaStr As String
Dim Lira As String, Kurus As String

If Not IsNumeric(Para) Then GoTo SayiDegil

ParaStr = Format(Abs(Para), "0.00")

Lira = Left(ParaStr, Len(ParaStr) - 3)
Kurus = Right(ParaStr, 2)

ParaCevir = IIf(Para < 0, "Eksi ", "") & Cevir(Lira) & " TL " & Cevir(Kurus) & " KR"

Exit Function

SayiDegil:
ParaCevir = "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", "UÇ", "DORT", "BES", "ALTI", "YEDI", "SEKIZ", "DOKUZ")
Onlar = Array("", "ON", "YIRMI", "OTUZ", "KIRK", "ELLI", "ALTMIS", "YETMIS", "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 = "YUZ"
Else
E = Birler(C(1)) + "YUZ"
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 = "SIFIR"

Cevir = UCase(Mid(Sonuc, 1, 1)) + Mid(Sonuc, 2, Len(Sonuc) - 1)
End Function
 

parametre

Destek Ekibi
Destek Ekibi
Katılım
28 Ocak 2007
Mesajlar
1,585
Excel Vers. ve Dili
ofis 2010 turkce
Public Function ParaCevir(Para)
Dim ParaStr As String
Dim Lira As String, Kurus As String

If Not IsNumeric(Para) Then GoTo SayiDegil

ParaStr = Format(Abs(Para), "0.00")

Lira = Left(ParaStr, Len(ParaStr) - 3)
Kurus = Right(ParaStr, 2)

ParaCevir = IIf(Para < 0, "Eksi ", "") & Cevir(Lira) & " TL " & Cevir(Kurus) & " KR"

Exit Function

SayiDegil:
ParaCevir = "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", "UÇ", "DORT", "BES", "ALTI", "YEDI", "SEKIZ", "DOKUZ")
Onlar = Array("", "ON", "YIRMI", "OTUZ", "KIRK", "ELLI", "ALTMIS", "YETMIS", "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 = "YUZ"
Else
E = Birler(C(1)) + "YUZ"
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 = "SIFIR"

Cevir = UCase(Mid(Sonuc, 1, 1)) + Mid(Sonuc, 2, Len(Sonuc) - 1)
End Function
kırmızı olan birbin ifadesini bin olarak değiştirkayıt et kullan kolay gelsin
 
Katılım
12 Temmuz 2007
Mesajlar
19
Excel Vers. ve Dili
ACCESS 2003
Sayın Parametre bende mi bir yanlışlık var bilemedim. Dediğiniz gibi yaptım yine önünde bir var.Eğer müsaitseniz bir örnek verebilirseniz çok iyi olurç Kolay gelsin... iyi çalışmalar...
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın Nevzat Gürbüz,

Bir de aşağıdaki fonksiyonu deneyn.


Kod:
Function YTL(sayi)
    x = InStr(1, sayi, ",")
    If x > 0 Then
        Lira = yaz$(Mid(sayi, 1, x - 1)) & " TÜRK LIRASI "
        TempKurus = Mid(sayi, x + 1, 98)
        If Len(TempKurus) = 1 Then TempKurus = TempKurus * 10
        If Len(TempKurus) > 2 Then TempKurus = Mid(TempKurus, 1, 2)
        Kurus = yaz$(TempKurus) & "  KURUS"
    Else
        Lira = yaz$(sayi) & " TÜRK LIRASI "
    End If
    YTL = Lira & Kurus
End Function
'
Function yaz$(sayi)
Dim b$(9)
Dim y$(9)
Dim m$(4)
Dim v$(15)
Dim c$(3)
b$(0) = ""
b$(1) = "BİR"
b$(2) = "İKİ"
b$(3) = "ÜÇ"
b$(4) = "DÖRT"
b$(5) = "BEŞ"
b$(6) = "ALTI"
b$(7) = "YEDİ"
b$(8) = "SEKİZ"
b$(9) = "DOKUZ"
y$(0) = ""
y$(1) = "ON"
y$(2) = "YİRMİ"
y$(3) = "OTUZ"
y$(4) = "KIRK"
y$(5) = "ELLİ"
y$(6) = "ALTMIŞ"
y$(7) = "YETMIŞ"
y$(8) = "SEKSEN"
y$(9) = "DOKSAN"
m$(0) = "TRİLYON"
m$(1) = "MİLYAR"
m$(2) = "MİLYON"
m$(3) = "BİN"
m$(4) = ""
a$ = Str(sayi)
If Left$(a$, 1) = "" Then pozitif = 1 Else pozitif = 0
a$ = Right$(a$, Len(a$) - 1)
For x = 1 To Len(a$)
If (Asc(Mid$(a$, x, 1)) > Asc("9")) Or (Asc(Mid$(a$, x, 1)) < Asc("0")) Then GoTo hata
Next x
If Len(a$) > 15 Then GoTo hata
a$ = String(15 - Len(a$), "0") + a$
For x = 1 To 15
v(x) = Val(Mid$(a$, x, 1))
Next x
a$ = ""
For x = 0 To 4
c(1) = v((x * 3) + 1)
c(2) = v((x * 3) + 2)
c(3) = v((x * 3) + 3)
If c(1) = 0 Then
e$ = ""
ElseIf c(1) = 1 Then
e$ = "YÜZ"
Else
e$ = b$(c(1)) + "YÜZ"
End If
e$ = e$ + y$(c(2)) + b$(c(3))
If e$ <> "" Then e$ = e$ + m$(x)
If x = 3 And e$ = "BİRBİN" Then e$ = "BİN"
s$ = s$ + e$
Next x
If s$ = "" Then s$ = "SIFIR"
If pozitif = 0 Then s$ = "" + s$
yaz$ = s$
GoTo tamam
hata: yaz$ = "hata"
tamam:
End Function
İyi çalışmalar
 
Katılım
12 Temmuz 2007
Mesajlar
19
Excel Vers. ve Dili
ACCESS 2003
İşte bu oldu elinize sağlık. Teşekkür ederim.
 
Üst