• DİKKAT

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

Soru Virgülü Noktaya Çevirme

Katılım
29 Mart 2013
Mesajlar
429
Excel Vers. ve Dili
Office 2016 Professional Türkçe 32 Bit
Metin formatındaki J14 den aşağıya doğru sonsuza kadar devam eden hücrelere, makro ile aktarılacak olan rakamlarda virgülden sonraki rakamlar için virgül kullanılıyor.
Amaç J14 hücresinden aşağıya doğru sonsuza kadar giden hücrelere veri girişi olduğunda otomatik olarak ve anlık olarak Virgülleri noktaya çevirmesini istiyorum.
Mümkün müdür böyle birşey acaba?
 

Ekli dosyalar

"Bildirge" sayfasının kod modülüne aşağıdakini yapıştırıp, deneyin ....

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("J14:J" & Rows.Count)) Is Nothing Then
        Target.Value = Replace(Target.Value, ",", ".")
    End If
End Sub

.
 
Çalışıyor fakat sonrasında
Run-time error '28:
Out of stack space
hatası veriyor #Haluk bey

If Not Intersect(Target, Range("J14:J" & Rows.Count)) Is Nothing Then
 
Son düzenleme:
Ben sayfa üzerine yazarak denemiş, bir hata almamıştım.

Ama siz, bir aşağıdaki şekliyle deneyin ....

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("J14:J" & Rows.Count)) Is Nothing Then
        Application.EnableEvents = False
            Target.Value = Replace(Target.Value, ",", ".")
        Application.EnableEvents = True
    End If
End Sub




.
 
Son düzenleme:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("J14:J" & Rows.Count)) Is Nothing Then
Application.EnableEvents = False
Target.Value = Replace(Target.Value, ",", ".")
Application.EnableEvents = True
End If
If Not Intersect(Target, Range("K14:K" & Rows.Count)) Is Nothing Then
Application.EnableEvents = False
Target.Value = Replace(Target.Value, ",", ".")
Application.EnableEvents = True
End If
End Sub

Formülü bu şekilde hem J hemde K sütununa uyguladım. Sorunsuz çalışıyor görevini yerine getiiryor. Fakat J ve K sütununu toplu olarak temizlediğim zaman, ekte resim formatın da sunulmuş olan ekran görüntüsü hatayı veriyor. Sonrasında cantinue( play ) butonuna basmama rağmen excele döndüğümde formül çalışmıyor. Sayfaları tamamen kapatıp açınca çalışıyor.
 

Ekli dosyalar

  • 1.jpg
    1.jpg
    64.2 KB · Görüntüleme: 8
  • 2.jpg
    2.jpg
    58.2 KB · Görüntüleme: 7
Kodların başına;

On error resume next

satırını ilave edip, deneyin .....

.
 
Bu arada, şimdi fark ettim.... "K" sütunu için kodu gereksiz uzatmışınız. Her 2 sütun için (J ve K) aşağıdaki gibi deneyin ....

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("J14:K" & Rows.Count)) Is Nothing Then
        On Error Resume Next
        Application.EnableEvents = False
            Target.Value = Replace(Target.Value, ",", ".")
        Application.EnableEvents = True
    End If
End Sub

.
 
İyi çalışmalar bu kod banada lazım. 70 kişilik listem var Kopyala yapıştır yaptığımda nokta olmuyor.
 
Ekli resimde görünen SGK nın dosyası, XML oluştururken nokta/virgül dönüşümü yapıyor hatırladığım kadarıyla.
Eğer öyle değilse, XML oluşturan prosedur üzerinde oynama yapmak daha mantıklı. Bunun sonucunda, sayfa üzerinde TR ondalık ayracı olarak virgül kalsın, önemli değil.
 
Ekli resimde görünen SGK nın dosyası, XML oluştururken nokta/virgül dönüşümü yapıyor hatırladığım kadarıyla.
Eğer öyle değilse, XML oluşturan prosedur üzerinde oynama yapmak daha mantıklı. Bunun sonucunda, sayfa üzerinde TR ondalık ayracı olarak virgül kalsın, önemli değil.
İyi çalışmalar. Sgk xml dosyası incelediğimde nokta/virgül dönüşümü yapmıyor. Dosya aktarıldıktan sonra e bildirgede virgül olursa kuruş kısmını almıyor. onun için buna ihtiyaç duyuldu. formdaki kod elle yazılırsa noktaya çevriliyor. yalnız veriler çok olduğundan elle yazılma imkanı yok . kopyala yapıştır yaptığımızda noktaya çevrilmiyor. yardımcı olursanız sevinirim.
 
Merhaba. Dönüşüm yapmasına yapmış ama, "Val" fonksiyonu kullandığı için virgüllü kısımları kırpmış. Ben "CDbl" olarak değiştirdim.
VBA editöründe 89 nolu (üstte satır numarasını görürsünüz) satıra gidin ve mevcut kodları aşağıdaki ile değiştirerek deneyin.
Sayfa üzerine virgül ayraçlı olarak sayı yazın ve test edin.

(Not : Kodu test etmedim)

PHP:
If (IsNumeric(PRIM_UCRET)) Then
    PEK = PEK + CDbl(PRIM_UCRET)
End If
If (IsNumeric(PRIM_IKRAMIYE)) Then
    PEK = PEK + CDbl(PRIM_IKRAMIYE)
End If
PEK = Replace(PEK, ",", ".")
 
Merhaba. Dönüşüm yapmasına yapmış ama, "Val" fonksiyonu kullandığı için virgüllü kısımları kırpmış. Ben "CDbl" olarak değiştirdim.
VBA editöründe 89 nolu (üstte satır numarasını görürsünüz) satıra gidin ve mevcut kodları aşağıdaki ile değiştirerek deneyin.
Sayfa üzerine virgül ayraçlı olarak sayı yazın ve test edin.

(Not : Kodu test etmedim)

PHP:
If (IsNumeric(PRIM_UCRET)) Then
    PEK = PEK + CDbl(PRIM_UCRET)
End If
If (IsNumeric(PRIM_IKRAMIYE)) Then
    PEK = PEK + CDbl(PRIM_IKRAMIYE)
End If
PEK = Replace(PEK, ",", ".")
sayın zeki bey vallahi yapamadım. kodu hepsıini bir verseniz çok iyi olur. iyi çalışmalar
 
ZEKİ GÜRSOY BEYİN VERMİŞ OLDUĞU KODUN UYGULANMIŞ HALİDİR. KOD ÇALIŞIYOR. FAKAT GİRİŞLER VİRGÜLLÜ OLARAK GİRİLECEK. XML HAZIRLA BUTONUNA BASINCA OLUŞTURULAN XML DOSYYASI VİRGÜLSÜZ OLARAK İŞLEMİNİ YAPIYOR.
 

Ekli dosyalar

  • XML.xls
    XML.xls
    139 KB · Görüntüleme: 21
Sadece ücret alanına yazılan rakamın nokta (.) yada virgül (,) ile yazılması sonucu 90. satırdan başlayan CDbl formülü ile kodlar otomatik olarak noktaya sorunsuz çeviriyor.
Fakat Hem ücret hemde ikramiye alanına rakam yazılınca pek toplamını yapıyor fakat, küsüratlara nokta eklemeden direk yazıyor rakamı. Toplama doğru ama sadece küsürata nokta koymuyor kodlar.
 
Günceldir
 
Geri
Üst