maaş disketi oluştururken ondalık problemi...

Katılım
22 Şubat 2008
Mesajlar
13
Excel Vers. ve Dili
Excel 2007 Türkçe
Merhaba,
Biliyorsunuz ülkemizde binlik ayıracı olarak nokta, ondalık ayıracı olarak virgül kullanılır.

1.151,87

gibi...

fakat bankalar maaş disketlerini (txt dosyalarını) amerikan sistemine göre isterler. yani ondalık ayraçını nokta olarak isterler.

1151.87 gibi...

ben excel'de vba kullanarak bir maaş txt dosyası oluşturma programı yaptım. fakat ben ne yaparsam yapayım visual basic, dosyayı oluştururken ondalık ayıracını denetim masası-->bölgesel ayarlar'daki ayarlardan alıyor. yani buradaki ayar Türkiye için virgül olarak ayarlı olduğu için txt dostasında parayı virgülle yazıyor.

txt'yi bankaların istediği şekilde, yani ondalık ayıracını nokta yazdırarak oluşturmak istersem bölgesel ayarlardaki ondalık ayıracını nokta yapıp, sonra programı çalıştırmam gerekiyor.

ben bölgesel ayarlara hiç dokunmadan, ayrıca excel'in "sistem ayırıcılarını kullan" checkbox'ıyla oynamadan, direkt kodlar içinde txt'yi oluştururken ondalık ayıracını nokta olarak yazdırmak istiyorum.

bunun sebebide hazırladığım programın son kullanıcı tarafından kullanılmasının gerekmesi. yani kullanıcı listeye paraları yazarken bildiği yollardan yazmalı, herhangi bir ayarla oynamak zorunda kalmamalı. program gerekli işlemi kendi içinde txt'yi oluştururken yapmalı.

bu işlemi vba'da yapabilir miyim?
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,397
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Merhaba,

"Replace" fonksiyonunu kullanabilirsiniz. Olmazsa gerçek bilgiler içermeyen bir dosya ekleyin.

Bu arada bankamızla "." ve "," ayrımından dolayı sıkıntı yaşamıyoruz.
 
Katılım
24 Şubat 2009
Mesajlar
1,077
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
01-03-2023
ondalık problemi

bunu denetim masasından bölgesel dil seçeneklerinden nokta yada virgül seçerek yapabilirsiniz.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
gerçek bilgileri içermeyen örnek bir dosya ekleyin bakalım iş bankası ziraat bankası ve vakıflar bankasına ait formatı hatırlıyorum.iş bankası formatında bir değişiklik yapıldı herhalde
 
Katılım
22 Şubat 2008
Mesajlar
13
Excel Vers. ve Dili
Excel 2007 Türkçe
Selamlar,
hazırladığım dosyayı ekledim. örnek girdiğim kayıt vakıfbank içindir. "Disket Oluştur" butonuna tıkladıktan sonra Müessese açılır kutusundan "Genel Müdürlük"ü seçerseniz Vakıfbank gelecektir.

Yalnız tekrar belirteyim (yanlış anlaşılma var gibi): problemim, sadece parayı yazdırırken ondalık ayıracını program kodu ile nokta yapmak.

şu an zaten bölgesel ayarları değiştirerek çalıştırıyorum programı.

ayrıca bankaların disket formatlarını oluşturmakta da bir problemim yok.

şu an Ziraat Bankasının formatı değişti ama programı düzeltmedim henüz.

formatı oluşturmakta sıkıntım yok, sadece paradaki ondalık ayıracını vba kodu ile nokta yapabilir miyim sorusuna cevap arıyorum.

Teşekkürler...
 

Ekli dosyalar

Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
dosyayı göremedim
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
aşağıda cevaplandı
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
aşağıya yeniden çıkartılmıştır.
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
tamam hallettim kodu user formun içine 2 adet OptionButton düğmesi koydum bunlar nakta ve virgülle ilgili olanlarıdır
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,873
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
birde benim disket formatıma bakınız bütün bankaların hepsini yapıyor ancak tablodaki krterleri girmesi gerekiyor ben bunu winifredin ziraat bankasına uyarlı yaptım
 

Ekli dosyalar

Katılım
22 Şubat 2008
Mesajlar
13
Excel Vers. ve Dili
Excel 2007 Türkçe
tamam hallettim kodu user formun içine 2 adet OptionButton düğmesi koydum bunlar nakta ve virgülle ilgili olanlarıdır
çok teşekkür ederim. benim asıl merak ettiğim direkt tek komutla biçimlendirme yapılıp yapılamayacağı idi.

demekki düşündüğüm gibi kodlarla uğraşarak yapılabiliyor sadece.

bunun diğer bir yöntemi de bölgesel ayarlardaki ondalık ayırıcıyı nokta, binlik ayırıcıyı virgül yapıp daha sonra, excel seçeneklerinden "sistem ayırıcılarını kullan" onay kutusunu temizleyip, buradaki ondalık ayırıcıyı virgül, binlik ayırıcıyı nokta yapmak.

bu şekilde yapılırsa sadece excel'de istenilen görünüm alınabilir. diğer programlar bölgesel ayarları kullanacağı için amerikan sisteminde görüntüler sayıları.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Ondalık ayraçını . (nokta) yapmak için aşağıda tasarladığım kullanıcı tanımlı fonksiyonu kullanabilirsiniz.

Kod:
Function FORMATCELL(Rakam As Variant, Kurus As Boolean, Ondalik As Boolean, Dijit As Byte) As String
Dim a, b, c, d, e, f, g, h, i, j, k As Variant
On Error Resume Next
'If Rakam = "" Or Kurus = "" Or Dijit = "" Or Ondalik = "" Then ActiveCell.Value = "": Exit Function
If Kurus = True Then
a = Len(Rakam)
If Ondalik = True Then
b = InStr(Rakam, ",")
Else
b = InStr(Rakam, ".")
End If
If b = 0 Then
c = a + 1
Else
c = b
End If
If (a - c) < 1 Then
d = 0
Else
d = a - c
End If
e = Left(Rakam, c - 1)
If d = 0 Then
f = "00"
Else
f = Right(Rakam, d)
End If
If d = 1 Then
g = f & "0"
ElseIf d = 0 Then
g = "00"
Else
g = f
End If
If Ondalik = True Then
h = e & "." & g
Else
h = e & "," & g
End If
Else
h = Rakam
End If
'********************************
If Dijit > Len(h) Then
k = WorksheetFunction.Rept(0, Dijit - Len(h)) & h
Else
k = h
End If
'********************************
FORMATCELL = k
End Function
Bu fonksiyon ile ondalık ayracını ,(virgül) veya .(nokta) yapabilirsiniz.
Ayrıca belirli bir uzunluğa tamamlamak için sayının önüne istediğini kadar 0 ekleyebilirsiniz.

Örneğin 155,50 sayısını 0000155.50 yapmak için =FORMATCELL(155,50;DOĞRU;DOĞRU;10) olarak yazabilirsiniz.

Makroda kullanmak içinse;

Kod:
Sub TXTKaydet()
for i = 1 To 10
veri = FORMATCELL(Cells(i,"a").Value,True,True,10)
Next i
End Sub
....
olarak yazabilirsiniz.
 
Üst