• DİKKAT

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

Excel VBA binlik ayracını değiştirme

Katılım
20 Kasım 2010
Mesajlar
62
Excel Vers. ve Dili
Excel 2007 - Excel 2010 TÜRKÇE
Merhabalar
Arkadaşlar biliyorum ki bu binlik ayracı hemen hemen herkes de bir problem olmuş ve bizim forumda olsun başka forumlarda olsun bu konu bir çok kez yazılmış.
Ben bir şey merak ediyorum (saçma olabilir lütfen mazur görün) ;
Sistem ayracını Denetim masası > Dil ve Bölgeden komple değiştire bildiğimiz gibi (ki bu şekilde bütün problemlerim çözülüyor yani en basitinden textboxtan excele aktaracağım sayıları (textbox1 * 1) dememe gerek kalmıyor ".value" demem yetiyor fakat oluşturduğum userform başka bilgisayarlarda da kullanılacağı için onların sistemindeki binlik ayracını da değiştirmem gerekiyor ama bunu yapamam (diğerlerinin muhasebe programları bozuluyor) neyse sisteminkini değiştire bildiğim gibi Excel VBA 'nın sistem ayracını da komple değiştirebilir miyim? yani Excel VBA 'ya bundan sonra binlik ayracı "#,##0.00" olarak değilde "#.##0,00" olarak kabul et diye bilir miyiz? Tabi ki Normal Excel sayfasında sorun olmuyor örneğin 1.000,50 diyebiliyorum ama VBA hala bunu algılayamıyor VBA'ya nokta yerine virgül, virgül yerine nokta kullan demek istiyorum..
Meramımı anlatabildim mi bilmiyorum? Yardımcı olabilir seniz çok sevinirim..
 
Merhaba

Bu kod işinizi görür mü?
Kod:
Sub ayrackontrol()
MsgBox "Ondalık Ayraç: " & Application.DecimalSeparator & Chr(10) & _
"Binlik Ayraç: " & Application.ThousandsSeparator
End Sub
Açılışta ayraçları kontrol eder, farklılık varsa kod ile değiştirirsiniz.

Ekte Zafer bey'in başka bir çalışması var, inceleyiniz.
 

Ekli dosyalar

Süleyman Bey, müsadenizle Bölgesel Dil Ayarlarını okutma ve yazma ile ilgili örnek vermek istiyorum...

Kod:
Sub Oku()
    Dim WSHShell As Object
    Set WSHShell = CreateObject("WScript.Shell")
        Cells(1, 1) = WSHShell.RegRead("HKCU\Control Panel\International\Format")
        Cells(1, 2) = WSHShell.RegRead("HKCU\Control Panel\International\iCountry")
        Cells(1, 3) = WSHShell.RegRead("HKCU\Control Panel\International\sCountry")
        Cells(1, 4) = WSHShell.RegRead("HKCU\Control Panel\International\sFormat")
        Cells(1, 5) = WSHShell.RegRead("HKCU\Control Panel\International\sGrouping")
        Cells(1, 6) = WSHShell.RegRead("HKCU\Control Panel\International\sShortDate")
        Cells(1, 7) = WSHShell.RegRead("HKCU\Control Panel\International\sDate")
        Cells(1, 8) = WSHShell.RegRead("HKCU\Control Panel\International\sDecimal")
        Cells(1, 9) = WSHShell.RegRead("HKCU\Control Panel\International\sDecimalSymbol")
        Cells(1, 10) = WSHShell.RegRead("HKCU\Control Panel\International\sDigitGroupingSymbol")
    Set WSHShell = Nothing
End Sub
Kod:
Sub Yaz()
    Dim WSHShell As Object
    Set WSHShell = CreateObject("WScript.Shell")
        WSHShell.RegWrite "HKCU\Control Panel\International\Format", "Turkish(Turkey)"
        WSHShell.RegWrite "HKCU\Control Panel\International\iCountry", "90"
        WSHShell.RegWrite "HKCU\Control Panel\International\sCountry", "Turkey"
        WSHShell.RegWrite "HKCU\Control Panel\International\sFormat", "Turkish(Turkey)"
        WSHShell.RegWrite "HKCU\Control Panel\International\sGrouping", "3;0"
        WSHShell.RegWrite "HKCU\Control Panel\International\sShortDate", "dd/mm/yyyy"
        WSHShell.RegWrite "HKCU\Control Panel\International\sDate", "."
        WSHShell.RegWrite "HKCU\Control Panel\International\sDecimal", ","
        WSHShell.RegWrite "HKCU\Control Panel\International\sDecimalSymbol", ","
        WSHShell.RegWrite "HKCU\Control Panel\International\sDigitGroupingSymbol", "."
     Set WSHShell = Nothing
End Sub
 
Cevaplarınız için teşekkürler denedim ama olmuyor.
Örneğin
Userform da 0,025 olan bir sayıyı excele atarken 2500,000 olarak atıyor. Ayrıca bütün hepsini metin olarak görüyor. 1 ile çarptırdım mı da hatalar çıkıyor.
 
Bu tip durumlarda ben replace fonksiyonunu kullanmayı tercih ederim. Örneğin,

Kod:
range("a1")=replace(textbox1,".",",")
 
TextBox'taki veriyi Excel'e gönderirken hangi kodu kullanıyorsunuz ?
 
Özür dilerim hastanedeydim cevaplarınızı çok geç okudum.
Şimdi devam etmeye başladım userformuma cevaplarınız için teşekkürler değerleri excelde metin olarak kayıt edeceğim denedim sayıya dönüştürmeye gerek kalmadı.
 
Süleyman Bey, müsadenizle Bölgesel Dil Ayarlarını okutma ve yazma ile ilgili örnek vermek istiyorum...

Kod:
Sub Oku()
    Dim WSHShell As Object
    Set WSHShell = CreateObject("WScript.Shell")
        Cells(1, 1) = WSHShell.RegRead("HKCU\Control Panel\International\Format")
        Cells(1, 2) = WSHShell.RegRead("HKCU\Control Panel\International\iCountry")
        Cells(1, 3) = WSHShell.RegRead("HKCU\Control Panel\International\sCountry")
        Cells(1, 4) = WSHShell.RegRead("HKCU\Control Panel\International\sFormat")
        Cells(1, 5) = WSHShell.RegRead("HKCU\Control Panel\International\sGrouping")
        Cells(1, 6) = WSHShell.RegRead("HKCU\Control Panel\International\sShortDate")
        Cells(1, 7) = WSHShell.RegRead("HKCU\Control Panel\International\sDate")
        Cells(1, 8) = WSHShell.RegRead("HKCU\Control Panel\International\sDecimal")
        Cells(1, 9) = WSHShell.RegRead("HKCU\Control Panel\International\sDecimalSymbol")
        Cells(1, 10) = WSHShell.RegRead("HKCU\Control Panel\International\sDigitGroupingSymbol")
    Set WSHShell = Nothing
End Sub
Kod:
Sub Yaz()
    Dim WSHShell As Object
    Set WSHShell = CreateObject("WScript.Shell")
        WSHShell.RegWrite "HKCU\Control Panel\International\Format", "Turkish(Turkey)"
        WSHShell.RegWrite "HKCU\Control Panel\International\iCountry", "90"
        WSHShell.RegWrite "HKCU\Control Panel\International\sCountry", "Turkey"
        WSHShell.RegWrite "HKCU\Control Panel\International\sFormat", "Turkish(Turkey)"
        WSHShell.RegWrite "HKCU\Control Panel\International\sGrouping", "3;0"
        WSHShell.RegWrite "HKCU\Control Panel\International\sShortDate", "dd/mm/yyyy"
        WSHShell.RegWrite "HKCU\Control Panel\International\sDate", "."
        WSHShell.RegWrite "HKCU\Control Panel\International\sDecimal", ","
        WSHShell.RegWrite "HKCU\Control Panel\International\sDecimalSymbol", ","
        WSHShell.RegWrite "HKCU\Control Panel\International\sDigitGroupingSymbol", "."
     Set WSHShell = Nothing
End Sub

Elinize sağlık kardeşim, işime yaradı. Bir de farklı bir version olsa şöyle;
- Bölgesel ayarları kontrol edecek,
- DigitGruping (,) virgül ise (.) nokta yap,
- DecimalSymbol (.) nokta ise (,) virgül yap, gibi
Macro biterken de eski haline çevirsin :)
 
Cevaplarınız için teşekkürler denedim ama olmuyor.
Örneğin
Userform da 0,025 olan bir sayıyı excele atarken 2500,000 olarak atıyor. Ayrıca bütün hepsini metin olarak görüyor. 1 ile çarptırdım mı da hatalar çıkıyor.
Kullandığın format Sayı / Number mı, Para birimi mi / Currency mi? Ben text dosya oluştururken bu kodları kullandım, istediğim gibi oluyor, işi bitince eski haline dönüyor (eski hali derken sistemde ne olduğunu bilmediğimden Decimal Symbol ".", Group Digit "," olarak yaptım.
 
Geri
Üst