Bu öğretici, VBA Hatası 1004- Uygulama Tanımlı veya Nesne Tanımlı Hatayı açıklayacaktır.
VBA çalışma zamanı hatası 1004, kod çalışırken oluşan Uygulama Tanımlı veya Nesne Tanımlı hata olarak bilinir. Kodlama hataları yapmak (Hata İşleme Kılavuzumuza bakın) VBA öğrenmenin bir parçasıdır ancak bir hatanın neden oluştuğunu bilmek, gelecekteki kodlamalarda hata yapmaktan kaçınmanıza yardımcı olur.
VBA Hatası 1004 - Nesne mevcut değil
Kodumuzdaki Range Name gibi tanımlanmamış bir nesneye atıfta bulunuyorsak, VBA kodu adı bulamayacağı için bu hata oluşabilir.
12345678 | Alt CopyRange()Aralık Olarak Kopyalama DimAralık Olarak KopyalaCopyFrom = Sheets(1).Range("CopyFrom") olarak ayarlayınCopyTo = Sheets(1).Range("CopyTo") olarak ayarlayınCopyFrom.CopyCopyTo.PasteÖzel xlPasteValuesAlt Bitiş |
Yukarıdaki örnek, "CopyFrom" adlı aralıktaki değerleri "CopyTo" adlı aralığına kopyalayacaktır - elbette bunların mevcut adlandırılmış aralıklar olması koşuluyla! Mevcut değillerse, Hata 1004 görüntülenecektir.
Yukarıdaki örnekte bu hatayı önlemenin en basit yolu, Excel çalışma kitabında aralık adları oluşturmak veya aralığa geleneksel satır ve sütun biçiminde başvurmaktır, örneğin: Aralık(“A1:A10”).
VBA Hatası 1004 - Ad Zaten Alınmış
Hata, bir nesneyi zaten var olan bir nesneyle yeniden adlandırmaya çalışıyorsanız da oluşabilir - örneğin, Sayfa1'i yeniden adlandırmaya çalışıyorsak ancak sayfaya verdiğiniz ad zaten başka bir sayfanın adıysa.
123 | Alt AdÇalışma Sayfası()ActiveSheet.Name = "Sayfa2"Alt Bitiş |
Halihazırda bir Sayfa2'ye sahipsek, o zaman hata oluşacaktır.
VBA Hatası 1004 - Bir Nesneye Yanlış Referans Verme
Hata, kodunuzdaki bir nesneye yanlış başvuruda bulunduğunuzda da ortaya çıkabilir. Örneğin:
12345678 | Alt CopyRange()Aralık Olarak Kopya KopyalaAralık Olarak KopyalaCopyFrom = Aralık ("A1:A10") olarak ayarlayınCopyTo = Aralık ("C1:C10") olarak ayarlayınAralık(CopyFrom).KopyalaRange(CopyTo).PasteSpecial xlPasteValuesAlt Bitiş |
Bu bize bir kez daha Hata 10004 verecek
Kodu düzeltin ve hata artık gösterilmeyecektir.
12345678 | Alt CopyRange()Aralık Olarak Kopya KopyalaAralık Olarak KopyalaCopyFrom = Aralık ("A1:A10") olarak ayarlayınCopyTo = Aralık ("C1:C10") olarak ayarlayınCopyFrom.CopyCopyTo.PasteÖzel xlPasteValuesAlt Bitiş |
VBA Hatası 1004 - Nesne Bulunamadı
Bu hata, bir çalışma kitabını açmaya çalıştığımızda ve çalışma kitabı bulunamadığında da ortaya çıkabilir - bu örnekte çalışma kitabı, bulunamayan nesnedir.
1234 | Alt OpenFile()Çalışma Kitabı Olarak Dim wbSet wb = Workbooks.Open("C:\Data\TestFile.xlsx")Alt Bitiş |
Hata kutusundaki mesaj farklı olsa da hata hala 1004.