Hata kodu 'run time error 1004'

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,203
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Hata ekranında DEBUG tuşuna bastığınızda sizi hata veren satıra götürecektir. Kodlarınızı foruma eklerseniz daha sağlıklı yorum yapabiliriz.
 

archers70

Altın Üye
Katılım
19 Eylül 2009
Mesajlar
113
Excel Vers. ve Dili
office 365 ing
Altın Üyelik Bitiş Tarihi
23-08-2026
Kodu ekledim. aşağıdadır.

kac = WorksheetFunction.Match(Range("E3"), Sheets("Data").Range("D1:D374"), 0)

Hata ekranında DEBUG tuşuna bastığınızda sizi hata veren satıra götürecektir. Kodlarınızı foruma eklerseniz daha sağlıklı yorum yapabiliriz.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,203
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodunuzda ilk satırlarda da aynı kod bloğu var. O bölüm hata vermiyor sanırım.

Aklıma gelen çözümler;

  1. E3 hücresi boş olabilir. Kontrol ediniz.
  2. Excel seçeneklerinden EKLENTİLER bölümünü açın. Ekrana gelen menüden "Çözücü araç takımı - VBA" seçeneğini aktif hale getirip kodu tekrar deneyi.
 

archers70

Altın Üye
Katılım
19 Eylül 2009
Mesajlar
113
Excel Vers. ve Dili
office 365 ing
Altın Üyelik Bitiş Tarihi
23-08-2026
Kodu ekledim. aşağıdadır.

kac = WorksheetFunction.Match(Range("E3"), Sheets("Data").Range("D1:D374"), 0)
Korhan bey selam
e3 hucresi boş değil zira solda haftalardan seçiyoruz hangı haftayı seçersek o geliyor. diğeri ise işaretli zaten.
resim ekte.
hatta exceli de ekledim.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,203
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Tıkladığınız hücredeki veri Data sayfasında "D" sütununda yoksa hata veriyor. Bu sebeple ilgili veriyi ilk olarak saydırıp sıfırdan büyükse Match fonksiyonu ile bulup sonuca gidebilirsiniz. Ya da kodlarınızın başına "On Error Resume Next" satırını ekledikten sonra hata kontrolü ekleyerek kodları yönlendirebilirsiniz.

Data sayfasında "24. Hafta" verisi "C" sütununa yazılmış. Fakat siz aratırken "D" sütununu kullanıyorsunuz.Bunlar hataya sebep oluyor. Bence en iyi yöntem saydırarak kontrol etmektir. Alternatif olarak FIND komutunuda araştırabilirsiniz.

Örnek 1; (Saydırma yöntemi)
Kod:
If WorksheetFunction.CountIf(Sheets("Data").Range("D1:D374"), Range("E3")) > 0 Then
kac = WorksheetFunction.Match(Range("E3"), Sheets("Data").Range("D1:D374"), 0)
Örnek 2; (Hata kontrolü)
Kod:
On Error Resume Next
kac = WorksheetFunction.Match(Range("E3"), Sheets("Data").Range("D1:D374"), 0)
If kac <> Empty Then
'İşlem yapan kodlarınız...
 

archers70

Altın Üye
Katılım
19 Eylül 2009
Mesajlar
113
Excel Vers. ve Dili
office 365 ing
Altın Üyelik Bitiş Tarihi
23-08-2026
teşekkür ederim korhan bey,
elinize sağlık.
 
Üst