• DİKKAT

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

Formül hatası

Katılım
1 Haziran 2005
Mesajlar
105
Excel Vers. ve Dili
Excel 2003-Türkçe
Aşağıdaki kodda a yada b herhangi bir değer yazdığımızda hata veriyor.
Hata vermesini nasıl engelleyebiliriz?
Yani a yada b ye tarih ile alakası bir şey yazarsak sadece hesaplama yapmasın. X yazsın sonuca mesela Mümkünmü?


Function Kidem3(Başlangıç_Tarihi, Son_Tarih)
A = Başlangıç_Tarihi
b = Son_Tarih
a1 = Int(Left$(A, 2))
a2 = Int(Mid(A, 4, 2))
a3 = Int(Right$(A, 4))

b1 = Int(Left$(b, 2))
b2 = Int(Mid$(b, 4, 2))
b3 = Int(Right$(b, 4))

If b1 > a1 Then
gun = (b1 - a1)
ElseIf b1 = a1 Then
gun = 0
Else
b2 = (b2 - 1)
gun = ((b1 + 30) - a1)
End If

If b2 > a2 Then
ay = (b2 - a2)
ElseIf b2 = a2 Then
ay = 0
Else
b3 = (b3 - 1)
ay = ((b2 + 12) - a2)
End If

Yıl = b3 - a3

If Yıl > 0 Then Yıl1 = (Yıl) Else: Yıl1 = (Yıl)
If ay > 0 Then Ay1 = (ay) Else: Ay1 = ""
If gun > 0 Then Gun1 = (gun) Else: Gun1 = ""

Kidem3 = Yıl1 & Ay1 & Gun1
End Function
 
Function Kidem3(Başlangıç_Tarihi, Son_Tarih)
A = Başlangıç_Tarihi
b = Son_Tarih
If Not IsDate(A) Or Not IsDate(b) Then
Kidem3="X"
Exit Function
End If
a1 = Int(Left$(A, 2))
a2 = Int(Mid(A, 4, 2))
a3 = Int(Right$(A, 4))
.....
.......
olarak deneyiniz.
 
Argument not optional diye hata verdi.
ben yanlış yazmışım. Oldu fakat tarihi yazarken hata veriyor 15.12.2006 yazacakken
15.12.200 de durduruyor.
b3 = Int(Right$(b, 4)) e getiriyor.
15.12.100
15.12.200
15.12.300..... bunlarda yine hata veriyor.
 
Son düzenleme:
fakat tarihi yazarken hata veriyor 15.12.2006 yazacakken
15.12.200 de durduruyor.
b3 = Int(Right$(b, 4)) e getiriyor.
15.12.100
15.12.200
15.12.300..... bunlarda yine hata veriyor.


Hücreye mi yazarken hata veriyor?
Tam olarak anlayamadım.Küçük örnek bir dosya eklerseniz iyi olur.
 
3 tane textbox
2 sinde tarih birindede bunların sonucu var bunlar ileri geri butonuyla değiştiriyorum.
Orda hata veriyor.

ama hücredede hata veriyor. #değer yazıyor.

15.12.200 filan varsa 2006 yazacaksam 200 de kalıyor.
 
Textbox'larda bu tür hatalar çıkabilir.

Siz Textbox'ların hangi olayına VBA kodlarını yazdınız?

Bunlarıda eklerseniz problemin anlaşılması kolay olabilir.
 
Örnek bir dosya eklerseniz daha anlaşılır olacaktır.
 
Kodları Textbox'ların Change olayı yerine Exit olayına yazınız.

Örneğin,

Kod:
Private Sub TextBox131_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox130 & TextBox131 = "" Then
TextBox275 = ""
TextBox276 = ""
TextBox277 = ""
Exit Sub
Else
TextBox275 = Kidem2(CDate(TextBox130), CDate(TextBox131))
TextBox276 = Kidem1(CDate(TextBox130), CDate(TextBox131))
TextBox277 = Kidem(CDate(TextBox130), CDate(TextBox131))
End If
End Sub
 
Bul deyince yada clikleyince hesaplama yapmıyor sadece girerken çıkışta yapıyor .
 
Buna başka türlü bir çözüm bulmamız gerekiyor.Çünkü Change olayında siz
veri girerken anında hesaplama yaptığı için daha tarih tamamlanmadığından hata verir.

Bunun yerine hesaplanan sonuçlarıda herhangi bir kolona kayıt edip,daha sonra bul ile aradığımızda bu verileri tekrar yükleyebilirsiniz.
 
Zaten bilgilerim EI sütununa kadar uzanıyor ve dediğiniz gibi yapsak ilveten
(140-289 textbox) 149 sütun eder. Dikkat ederseniz benim kitapta 116 sütunluk yer kaldı. Başka sayfaya derseniz onu bilemem ama herşeyi baştan yapmam gerekiyor.

İllaki textbox lazım değil başka bir şeyde olabilir label filan onlarla olursa bilmiyorum.
Uzman sizsiniz. :)
 
tarih

arkadaşlar ve üstadlar ii akşamlar konuyu tam anlamamak ile birlikte tarih ile ilgili bir sorun var sanıyorum >>
textboxların exit ya da change olayına değil de "after update" olayına eklemeyi dener misiniz ?
 
1. si combobox ve 3 tanede textbox düşünün ve combobox dan veri arattırarak
yada bul diyerek textboxlara tarih getirtiyoruz.
iki tane. Bunlardan birisi küçük diğeri büyük tarih.
15.12.2005-17.12.2005

3. textbox da yukardaki formülü kullanarak gün ay vs. hesaplayıp yazıyor.

2. si buraya veride kaydediyorum.
1.textboxa tarih giriyorum.. sorun yok.
2.sine girdiğimde 15.12.2006 yazarken yazdırmıyor buda change olarak ayarlandığı için yani ben yazarken oda hesaplama yaptığı için 15.12.200 dediğimde durduruyor yaptığım işlemi 6 yazdırmıyor yani

Aynısını hücrede denediğim zaman 15.12.200 haricinde hiç bir şekilde hata vermiyor.
Tabi kodların başına Sayın ripek in kodlarını yerleştirdikten sonra önce bu kadarda yazamıyordum.
Sonra sayın ripek change değilde exit yapın dedi ama bu seferde önceden tanımlı tarihlerin sonuçlarını göremiyorum.

Umarım anlatabilmişimdir.
 
Sayfadada eğer tarih 15.12.200 gibi olursa hata veriyor.
Bunu sayfada önleme şeklini kodlarda uygulasak olmazmı?
 
calendar eklersek aynı sorun olurmu?
 
Geri
Üst