Toplama makrosunda tuhaf birşeyler oluyor

Katılım
8 Haziran 2007
Mesajlar
761
Excel Vers. ve Dili
excel- 2003 Türkçe
Arkadaşlar kolay gelsin. Daha önce formdaki arkadaşlara yaptırdığım bir kod hatasız çalışıyordu. Diğer bilgisayarlarda şuan karşılaştığım hatalar olduğu halde benim bilgisayarda düzgün çalışıyordu. Lakin bilgisayarı yeniden kurana kadar. Resmini çektiğim ve eklediğim örnekte göreceğiniz gibi alt toplam aldığım 3 adet TextBoxtaki rakamları çok farlı gözüküyor. Nedeni ve çözümü konusunda yardımlarınızı bekliyorum.





Private Sub CommandButton1_Click()
On Error Resume Next
Sheets("Bordro").Select
If TextBox75.Value = "" Or TextBox75.Value = 0 Or TextBox75.Value = " " Then
MsgBox "Text kutusu boş. Lütfen bir değer giriniz.."
Exit Sub
End If
'On Error Resume Next
'Cells.Find(What:=TextBox75.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
':=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
'True, SearchFormat:=False).Activate
Set bul = Columns("B:Bw").Find(TextBox75.Value, , xlValues, xlWhole)

If bul Is Nothing Then
MsgBox "Aradığınız veri bulunamadı. Lütfen yaptığınız girişi kontrol ediniz."
Exit Sub
End If
Cells(bul.Row, 1).Select
TextBox1.Value = ActiveCell.Value 'Sıra No
TextBox2.Value = ActiveCell.Offset(0, 1).Value 'Personel No
TextBox3.Value = ActiveCell.Offset(0, 2).Value 'Ünvanı
TextBox4.Value = ActiveCell.Offset(0, 3).Value 'Adı
TextBox5.Value = ActiveCell.Offset(0, 4).Value 'Soyadı
TextBox6.Value = ActiveCell.Offset(0, 5).Value 'Aylık Derece Kademe 1
TextBox7.Value = ActiveCell.Offset(0, 6).Value 'Kademe 1
TextBox8.Value = ActiveCell.Offset(0, 9).Value 'Medeni Hali
TextBox30.Value = ActiveCell.Offset(0, 12).Value 'Aylık Tutar
TextBox31.Value = ActiveCell.Offset(0, 13).Value 'Taban Aylık Tutarı
TextBox32.Value = ActiveCell.Offset(0, 14).Value 'Ek GÖsterge Tutarı
TextBox33.Value = ActiveCell.Offset(0, 15).Value 'Yan Ödeme Tutarı
TextBox34.Value = ActiveCell.Offset(0, 16).Value 'Kıdem Aylık Tutarı
TextBox35.Value = ActiveCell.Offset(0, 19).Value 'Aile Yardımı
TextBox36.Value = ActiveCell.Offset(0, 20).Value 'Çocuk Yardımı
TextBox37.Value = ActiveCell.Offset(0, 21).Value 'Emekli Sandığı Devlet Artışı % 20
TextBox38.Value = ActiveCell.Offset(0, 23).Value '% 100 Artış Keseneği
TextBox39.Value = ActiveCell.Offset(0, 24).Value 'Özel Hizmet Ve Adalet Tazminatı
TextBox40.Value = ActiveCell.Offset(0, 27).Value 'Fark Tazminatı
TextBox41.Value = ActiveCell.Offset(0, 28).Value '% 20 Emekli keseneği
TextBox42.Value = ActiveCell.Offset(0, 29).Value 'Sendika ödeneği
TextBox43.Value = ActiveCell.Offset(0, 30).Value 'Vergi iade
TextBox44.Value = ActiveCell.Offset(0, 31).Value 'Mesai
TextBox46.Value = ActiveCell.Offset(0, 17).Value 'SGK %7,5
TextBox48.Value = ActiveCell.Offset(0, 22).Value '% 25 giriş
TextBox50.Value = ActiveCell.Offset(0, 32).Value 'Gelir Vergisi
TextBox51.Value = ActiveCell.Offset(0, 33).Value 'Damga Vergisi
TextBox52.Value = ActiveCell.Offset(0, 35).Value 'Artış
TextBox53.Value = ActiveCell.Offset(0, 36).Value '% 16
TextBox54.Value = ActiveCell.Offset(0, 37).Value '% 20
TextBox55.Value = ActiveCell.Offset(0, 38).Value 'Kefalet
TextBox57.Value = ActiveCell.Offset(0, 40).Value 'hizmet
TextBox58.Value = ActiveCell.Offset(0, 41).Value 'nafaka
TextBox59.Value = ActiveCell.Offset(0, 42).Value 'icra
TextBox60.Value = ActiveCell.Offset(0, 43).Value 'sendika
TextBox61.Value = ActiveCell.Offset(0, 44).Value 'ilaç
TextBox64.Value = ActiveCell.Offset(0, 34).Value '%25 Giriş Kişi
TextBox70.Value = ActiveCell.Offset(0, 45).Value 'ilaç
TextBox71.Value = ActiveCell.Offset(0, 46).Value 'ilaç
TextBox66.Value = ActiveCell.Offset(0, 17).Value 'SGK %7,5
TextBox65.Value = ActiveCell.Offset(0, 18).Value 'SGK %5
'Formunuz Üzerindeki Textbox'ların Veri Alacağı Satırları Bu Şekilde Ayarlayın.
'GERİSİNİ SİZE BIRAKTIM.
Set bul = Sheets("Personel_bilgi").Columns("B:Bw").Find(TextBox75.Value, , xlValues, xlWhole)
' BU SATIRI KENDİNİZE GÖRE DÜZENLEYİNİZ. Hangi sütun(lar) da ne aranacaksa ...
If bul Is Nothing Then
MsgBox "Personel bilgi sayfasında istenen bulunamadı"
Else
TextBox9.Value = Sheets("Personel_bilgi").Cells(bul.Row, 15) 'Gösterge
TextBox10.Value = Sheets("Personel_bilgi").Cells(bul.Row, 16) 'Ek Gösterge
TextBox11.Value = Sheets("Personel_bilgi").Cells(bul.Row, 18) 'Kıdem Yılı
TextBox12.Value = Sheets("Personel_bilgi").Cells(bul.Row, 24) 'Kıstas Aylık
TextBox13.Value = Sheets("Personel_bilgi").Cells(bul.Row, 49) 'Emekli Sicil No
TextBox14.Value = Sheets("Personel_bilgi").Cells(bul.Row, 48) 'banka Hesap No
TextBox15.Value = Sheets("Personel_bilgi").Cells(bul.Row, 47) 'T.C. Kimlik No
TextBox45.Value = Sheets("Personel_bilgi").Cells(bul.Row, 39) 'Mesai
TextBox72.Value = Sheets("Personel_bilgi").Cells(bul.Row, 41) 'geçim indirimi
TextBox47.Value = Sheets("Personel_bilgi").Cells(bul.Row, 51) 'Maaş Farkı
TextBox62.Value = Sheets("Personel_bilgi").Cells(bul.Row, 43) 'for
TextBox63.Value = Sheets("Personel_bilgi").Cells(bul.Row, 45) 'Yemek
TextBox56.Value = Sheets("Personel_bilgi").Cells(bul.Row, 57) 'Kira
TextBox73.Value = Sheets("Personel_bilgi").Cells(bul.Row, 26) 'Ek Ödeme
End If
Dim topla1, topla2 As Single
For x = 30 To 48 'Burayı Textbox sayısına göre düzeltiniz.
If IsNumeric(Controls("TextBox" & x)) Then
topla1 = topla1 + Controls("TextBox" & x) * 1
End If
Next
TextBox67 = topla1
topla = 0
For x = 50 To 66 'Burayı Textbox sayısına göre düzeltiniz.
If IsNumeric(Controls("TextBox" & x)) Then
topla2 = topla2 + Controls("TextBox" & x) * 1
End If
Next
TextBox68 = Format(topla2, "#,##0.00")
TextBox69 = Format(TextBox67, "#,##0.00") - Format(TextBox68, "#,##0.00")
End Sub
 

Ekli dosyalar

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba

muhtemel format atılmış ve oem kurulmuştur.
kullanılan ayraçlarınızı kontrol edin.
başlat / ayarlar / denetim masası / tarih ... bölgesel seçenekler / bölge ve dil seçenekleri / bölgesel seçenekler / sayılar /

ondalık ayraç: "," virgül
basamak gruplandırma: "." nokta
liste ayırıcı: ";" noktalı virgül
ölçü birimi: metrik

not:
olsa olsa yöntemi ile çözüm önerilmiştir
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,788
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
topla1 = topla1 + Controls("TextBox" & x) * 1
topla2 = topla2 + Controls("TextBox" & x) * 1

yukarıdaki kodları aşağıdaki kodlarla değiştirip denermisiniz

topla1 = topla1 + CDbl(Controls("TextBox" & x) * 1)
topla2 = topla2 + CDbl(Controls("TextBox" & x) * 1)
 
Katılım
8 Haziran 2007
Mesajlar
761
Excel Vers. ve Dili
excel- 2003 Türkçe
maalesef ikisini de denedim olmadı. Ayarlarına baktım sizin gösterdiğiniz gibi. Başka neden olabilir.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
Bölgesel seçenekleri, birde

Ondalık ayraç: "."
Basamak gruplandırma: ","

Parabirimini de aynı şekilde değiştirin.
 
Katılım
8 Haziran 2007
Mesajlar
761
Excel Vers. ve Dili
excel- 2003 Türkçe
Arkadaşlar denedim olmuyor. Yukarıda bahsettiğiniz ayarlarda bir yanlışlık olsa normal excel sayfasında hata olmaz mı. Yada söyle söyleyim. Bordrodan Textboxlara veri alıyorum. Bordroda " 200,45 " olan sayı Textboxsa gelince "200.45" dönüyor. Aceba excelin yada Visual Basic te bir ayar falan gerekir mi.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
Arkadaşlar denedim olmuyor. Yukarıda bahsettiğiniz ayarlarda bir yanlışlık olsa normal excel sayfasında hata olmaz mı. Yada söyle söyleyim. Bordrodan Textboxlara veri alıyorum. Bordroda " 200,45 " olan sayı Textboxsa gelince "200.45" dönüyor. Aceba excelin yada Visual Basic te bir ayar falan gerekir mi.
merhaba
textbox yazı formatınızın "200.45" şeklinde olması normal, ondalık ayracı "." nokta şeklinde yaz demişsiniz.

aşağıdaki kodlarınızda "." nokta ile "," virgülün yerlerini değiştirin.

Kod:
TextBox68 = Format(topla2, "#,##0.00")
TextBox69 = Format(TextBox67, "#,##0.00") - Format(TextBox68, "#,##0.00")
 
Katılım
8 Haziran 2007
Mesajlar
761
Excel Vers. ve Dili
excel- 2003 Türkçe
İlgin için çok teşekkür ederim. Şöyle bir şey yapsak olurmu. Dosya boyutu büyük olduğu için forma koyamıyorum. Mail adresini verebilirsen ve ben dosyayı size göndersem ve sizin bilgisayarda normal çalışıp çalışmadığını kontrol etsek olur mu. Adalet Bakanlığına bağlı olduğu için benim bilgisayar belki ayarlar o yüzden çalışmıyordur.
 
Katılım
8 Haziran 2007
Mesajlar
761
Excel Vers. ve Dili
excel- 2003 Türkçe
Arkadaşlar bu toplama kodunu tekrar yazabilirmiyiz. Formu araştırdım fakat gene olmadı. Clas müdül den falan bahsediyor. Bu şekilde yazılabilir mi
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,788
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
10 adet textbox nesnesini textbox11 nesnesine topluyor
 

Ekli dosyalar

Katılım
8 Haziran 2007
Mesajlar
761
Excel Vers. ve Dili
excel- 2003 Türkçe
Peki bunu sorgu çalıştırıp form üzerine gelen TextBoxlara nasıl uyarlarız
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Tam emin değilim ama kullanmış olduğunuz tanımlamadan da kaynaklanabilir. Tanımlamanızı aşağıdaki şekilde değiştirip denermisiniz.

Eski hali;
Kod:
Dim topla1, topla2 As Single
Yeni hali;
Kod:
Dim topla1 As Double, topla2 As Double
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Kullandığınız kodu aşağıdaki şekilde değiştirip denermisiniz.

Kod:
Private Sub CommandButton1_Click()
    On Error Resume Next
    
    Sheets("Bordro").Select
    
    If TextBox75.Value = "" Or TextBox75.Value = 0 Or TextBox75.Value = " " Then
    MsgBox "Text kutusu boş. Lütfen bir değer giriniz.."
    Exit Sub
    End If
    
    Set bul = Columns("B:Bw").Find(TextBox75.Value, , xlValues, xlWhole)
    
    If bul Is Nothing Then
    MsgBox "Aradığınız veri bulunamadı. Lütfen yaptığınız girişi kontrol ediniz."
    Exit Sub
    End If
    
    Cells(bul.Row, 1).Select
    
    TextBox1.Value = ActiveCell.Value 'Sıra No
    TextBox2.Value = ActiveCell.Offset(0, 1).Value 'Personel No
    TextBox3.Value = ActiveCell.Offset(0, 2).Value 'Ünvanı
    TextBox4.Value = ActiveCell.Offset(0, 3).Value 'Adı
    TextBox5.Value = ActiveCell.Offset(0, 4).Value 'Soyadı
    TextBox6.Value = ActiveCell.Offset(0, 5).Value 'Aylık Derece Kademe 1
    TextBox7.Value = ActiveCell.Offset(0, 6).Value 'Kademe 1
    TextBox8.Value = ActiveCell.Offset(0, 9).Value 'Medeni Hali
    TextBox30.Value = ActiveCell.Offset(0, 12).Value 'Aylık Tutar
    TextBox31.Value = ActiveCell.Offset(0, 13).Value 'Taban Aylık Tutarı
    TextBox32.Value = ActiveCell.Offset(0, 14).Value 'Ek GÖsterge Tutarı
    TextBox33.Value = ActiveCell.Offset(0, 15).Value 'Yan Ödeme Tutarı
    TextBox34.Value = ActiveCell.Offset(0, 16).Value 'Kıdem Aylık Tutarı
    TextBox35.Value = ActiveCell.Offset(0, 19).Value 'Aile Yardımı
    TextBox36.Value = ActiveCell.Offset(0, 20).Value 'Çocuk Yardımı
    TextBox37.Value = ActiveCell.Offset(0, 21).Value 'Emekli Sandığı Devlet Artışı % 20
    TextBox38.Value = ActiveCell.Offset(0, 23).Value '% 100 Artış Keseneği
    TextBox39.Value = ActiveCell.Offset(0, 24).Value 'Özel Hizmet Ve Adalet Tazminatı
    TextBox40.Value = ActiveCell.Offset(0, 27).Value 'Fark Tazminatı
    TextBox41.Value = ActiveCell.Offset(0, 28).Value '% 20 Emekli keseneği
    TextBox42.Value = ActiveCell.Offset(0, 29).Value 'Sendika ödeneği
    TextBox43.Value = ActiveCell.Offset(0, 30).Value 'Vergi iade
    TextBox44.Value = ActiveCell.Offset(0, 31).Value 'Mesai
    TextBox46.Value = ActiveCell.Offset(0, 17).Value 'SGK %7,5
    TextBox48.Value = ActiveCell.Offset(0, 22).Value '% 25 giriş
    TextBox50.Value = ActiveCell.Offset(0, 32).Value 'Gelir Vergisi
    TextBox51.Value = ActiveCell.Offset(0, 33).Value 'Damga Vergisi
    TextBox52.Value = ActiveCell.Offset(0, 35).Value 'Artış
    TextBox53.Value = ActiveCell.Offset(0, 36).Value '% 16
    TextBox54.Value = ActiveCell.Offset(0, 37).Value '% 20
    TextBox55.Value = ActiveCell.Offset(0, 38).Value 'Kefalet
    TextBox57.Value = ActiveCell.Offset(0, 40).Value 'hizmet
    TextBox58.Value = ActiveCell.Offset(0, 41).Value 'nafaka
    TextBox59.Value = ActiveCell.Offset(0, 42).Value 'icra
    TextBox60.Value = ActiveCell.Offset(0, 43).Value 'sendika
    TextBox61.Value = ActiveCell.Offset(0, 44).Value 'ilaç
    TextBox64.Value = ActiveCell.Offset(0, 34).Value '%25 Giriş Kişi
    TextBox70.Value = ActiveCell.Offset(0, 45).Value 'ilaç
    TextBox71.Value = ActiveCell.Offset(0, 46).Value 'ilaç
    TextBox66.Value = ActiveCell.Offset(0, 17).Value 'SGK %7,5
    TextBox65.Value = ActiveCell.Offset(0, 18).Value 'SGK %5
    'Formunuz Üzerindeki Textbox'ların Veri Alacağı Satırları Bu Şekilde Ayarlayın.
    'GERİSİNİ SİZE BIRAKTIM.
    
    Set bul = Sheets("Personel_bilgi").Columns("B:Bw").Find(TextBox75.Value, , xlValues, xlWhole)
    ' BU SATIRI KENDİNİZE GÖRE DÜZENLEYİNİZ. Hangi sütun(lar) da ne aranacaksa ...
    If bul Is Nothing Then
    MsgBox "Personel bilgi sayfasında istenen bulunamadı"
    Else
    TextBox9.Value = Sheets("Personel_bilgi").Cells(bul.Row, 15) 'Gösterge
    TextBox10.Value = Sheets("Personel_bilgi").Cells(bul.Row, 16) 'Ek Gösterge
    TextBox11.Value = Sheets("Personel_bilgi").Cells(bul.Row, 18) 'Kıdem Yılı
    TextBox12.Value = Sheets("Personel_bilgi").Cells(bul.Row, 24) 'Kıstas Aylık
    TextBox13.Value = Sheets("Personel_bilgi").Cells(bul.Row, 49) 'Emekli Sicil No
    TextBox14.Value = Sheets("Personel_bilgi").Cells(bul.Row, 48) 'banka Hesap No
    TextBox15.Value = Sheets("Personel_bilgi").Cells(bul.Row, 47) 'T.C. Kimlik No
    TextBox45.Value = Sheets("Personel_bilgi").Cells(bul.Row, 39) 'Mesai
    TextBox72.Value = Sheets("Personel_bilgi").Cells(bul.Row, 41) 'geçim indirimi
    TextBox47.Value = Sheets("Personel_bilgi").Cells(bul.Row, 51) 'Maaş Farkı
    TextBox62.Value = Sheets("Personel_bilgi").Cells(bul.Row, 43) 'for
    TextBox63.Value = Sheets("Personel_bilgi").Cells(bul.Row, 45) 'Yemek
    TextBox56.Value = Sheets("Personel_bilgi").Cells(bul.Row, 57) 'Kira
    TextBox73.Value = Sheets("Personel_bilgi").Cells(bul.Row, 26) 'Ek Ödeme
    End If
    
    Dim Topla1 As Double, Topla2 As Double
    
    For x = 30 To 48 'Burayı Textbox sayısına göre düzeltiniz.
    If IsNumeric(Controls("TextBox" & x)) Then
    Topla1 = Topla1 + Replace(Controls("TextBox" & x), ".", ",")
    End If
    Next
    TextBox67 = Format(Topla1, "#,##0.00")
    topla = 0
    For x = 50 To 66 'Burayı Textbox sayısına göre düzeltiniz.
    If IsNumeric(Controls("TextBox" & x)) Then
    Topla2 = Topla2 + Replace(Controls("TextBox" & x), ".", ",")
    End If
    Next
    TextBox68 = Format(Topla2, "#,##0.00")
    TextBox69 = Format((CDbl(TextBox67) - CDbl(TextBox68)), "#,##0.00")
End Sub
 
Katılım
18 Aralık 2007
Mesajlar
12
Excel Vers. ve Dili
2003
Altın Üyelik Bitiş Tarihi
13/01/2022
bende daha önce buna benzer bir maaş programı kullandım. herşey normaldi lakin derecesi 7 olan bir personelin maaşını hesaplarken anormallikler boy görterdi.bence sorun 7 de. makrolarla ilgili pek bilgim yok. ama sadece sorunun 7 de olması şaşırtıcı
 
Üst