• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

rakamı yazıya çevirme

Ekteki örneği inceleyiniz. Linkteki bir fonksiyon için yazılı kodlar bir module sayfasına kopyalandı. Artık fonksiyon listenizde "paracevir" isimli yeni bir fonksiyon göreceksiniz. Bu fonksiyon rakamı yazıya çevirecektir.
 
1256,89 #AD?
böyle bir hata veriyor ne yapmam gerek ayrıca ben bunu başka bir dosyaya kaydetmek istiyorum yardımcı olursanız sevinirim

teşekkürler
 
Ekte verilen dosyanın visual basic düzenleyicisine girin. Orada gördüğünüz kodları kendi dosyanıza kopyalayın. Daha sonra sayının metin karşılığını hangi hücreye yazdıracaksanız o hücreye fonksiyon ekleme bölümünden "ParaCevir" isimli fonksiyonu seçin. Aşağıdaki gibi bir fonksiyon olacaktır. Bu örnekte A1 hücresindeki sayı metne çevrilmektedir. Eğer yine olmazsa dosyanızı ekleyin onun üzerinden gidelim.

=ParaCevir(A1)
 
Gerekli ilaveleri yaptım.
 
kodları yazan arkadaş bunu "kullanıcı tanımlı fonksiyon" a dönüştürüp dosyayı buraya ekler ve nasıl kullanılacağını yazarsa sanırım birçok kişinin sorununu çözmüş olur.
 
muygun galiba örnek dosyayı incelemedin.

Çok iyi bir şekilde çalışıyor. Kullanıcı tanımlı fonksiyon halinde zaten..


Kod:
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) & " Lira " & Cevir(Kurus) & " Kuruş"
    
    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", "üç", "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 = "Sıfır"
    
    Cevir = UCase(Mid(Sonuc, 1, 1)) + Mid(Sonuc, 2, Len(Sonuc) - 1)
End Function
 
Slm lar.

inceledim
0,356 da Sıfır Lira 356 Kuruş ,
123,0 da 123 Lira Sıfır Kuruş yazdığını da biliyorum
VB bilgim yok denecek kadar az
ama kodların virgülden önce veya sonra değer sıfır ise yazmaması gerektiğini düşünüyorum. (bu benim düşüncem belki yanlış olabilir.)
birde XLSTART klasörünün içinde kullanılacak şekilde (.XLA uzantılı) eklenti buraya ilave edilirse çok kimsenin kullanacağına eminim (ben dahil)

saygılar...
 
Virgülden Ã?nceki değer Sıfır Yazmazsa
,356 gibi durum ortaya çıkmazmı?Yine Aynı Þekilde
123, He.(,)Virgülü Kaldıralım.
123 Oluyor.Bu Seferde 123 YTL Okunma hissi doğuyor.Bana Böyle geldi.

Bu Arada Bilgi Olarak
30.09.2004/25599 Tarihli Resmi Gazetede Binlik Ayraç (.),Kuruş için (,) Konulması Kanunlaşmıştır.

Siz "Sıfır"Yazısının Çıkmasını istemiyorsunuz sanırım.Ozamanda Yaz ile İstenilen kuruş yazısı el ile yazılabilir.Ama Düşüncemde hatalıda olabilrim.Değişik Görüşlerde gelecektir.

Eklenti Dosyası Ataçta eklenmiş olup Bunun .xls olan Uzantısını .xla yapıp
C:\WINDOWS\Profiles\Muhasebe\Application Data\Microsoft\AddIns Klasörüne kopyalayız.
 
Sn muygun

Uyarınızı dikkate alarak kodda bir değişiklik yaptım. Yaptığım değişiklik aşağıdaki gibidir. Ekide incelerseniz işlevin sıfır lira ve sıfır kuruş yazmadığını göreceksiniz.

Selamlar

[vb:1:377c858028]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)
If Lira = 0 Then
ParaCevir = Cevir(Kurus) & " Kuruş"
Exit Function
End If
If Kurus = 0 Then
ParaCevir = IIf(Para < 0, "Eksi ", "") & Cevir(Lira) & " Lira"
Exit Function
End If
ParaCevir = IIf(Para < 0, "Eksi ", "") & Cevir(Lira) & " Lira " & Cevir(Kurus) & " Kuruş"
Exit Function
SayiDegil:
ParaCevir = "GİRİLEN DEÐER SAYI DEÐİL!"
End Function[/vb:1:377c858028]
 
slm sevgili arkadaslar benim excel de bir sorunum var
bu YTL DURUMU iyice karıştı misal vererek anlatmak istiyorum
115,58 YTL de kuruş hanesinin son rakamı olan 8 in
1 ile 4 arası ise otomotikman 0 olarak yazılması
5 ile 9 arası ise otomotikman 5 yazılması lazım bunun için bana yardımcı olabilirmisiniz
 
Aşağıdaki işlev işinizi görecektir. Burada A1 hücresindeki değere göre çalışır,siz bunu değiştirirsiniz.

=YUVARLA(A1;1)
 
Sorunuzu tam olarak anlayamadım ama TL'den YTL'ye dönüştürürken bu yuvarlamayı yapan fonksiyonu Muhasebat Genel Müdürlüğü Genel Tebliğinde yayınlamıştı. Forumda daha önce yayınlanmış olabilir.

=((A2-(SAÐDAN(A2;4)))/1000000)+((EÐER(((SAÐDAN(A2;4))-5000)>=0;1;0))/100)
 
bu YTL DURUMU iyice karıştı misal vererek anlatmak istiyorum
115,58 YTL de kuruş hanesinin son rakamı olan 8 in
1 ile 4 arası ise otomotikman 0 olarak yazılması
5 ile 9 arası ise otomotikman 5 yazılması lazım
Bakın Karışıklıklar muhakkak olacaktır.Ama Genel Bir kanun var.Ve kanuna göre;
(.) ve (,) Ayraçlara Dikkat edin.Kanuna Göre Binlik Ayraç (.),Kuruş Ayracı ise (,) Olacak.
Yani 1.250,26 YTL (YalnızBinikiyüzellil Yeni Tl,Yirmi Altı Kuruş)
Ã?RNEKLER:
125.125.256.000 lira=125.125,26 Olacak..

658.356.056.000 lira=658.356,06 Olacak

125.007.000 lira=125,01 Olacak.

1.300,395 lira=1.300,40 Olacak

3,750 lira=3,75 Olacak

60,150 lira=60,15 Olacak

88,220 lira=88,22 Olacak

1.416,905 lira=1.416,91 Olacak


Hesaplamalarda Bu kurallar geçerlidir..
 
slm.lar
öncelikle çözüm üretenlere teşekkürler.
sn.leventm. uğraşın için ayrıca tşk.
ama anlaşılan problem o kadar basit değil.
çözümüne 2 şekilde gidilebiliyor.
1.si standart kod üretimi ile ne görünüyorsa bunu yazıya çevirmek (ki bence doğru olan bu)
2.si tebliğler de belirtilen yuvarlama,virgülden sonra 2 rakam alma vs. gibi konumlara göre kod üretmek
işte karmaşa burda zannedersem zamanla kullanımdaki sıkıntılar açığa çıkacak ve yeni çözümler üretilecek.

saygılar...
 
Geri
Üst