VBA Aboneliği Aralık Dışında (Çalışma Zamanı Hatası '9') - Bu Hata Neden Oluşur?

Excel VBA Alt Simge Aralık Dışında

Alt simge aralık dışı, VBA'da bir kodda bulunmayan bir şeye veya değişkene başvurmaya çalıştığımızda karşılaştığımız bir hatadır, örneğin, x adında bir değişkenimiz olmadığını varsayalım ancak x üzerinde msgbox işlevini alt simge aralık dışı hatasıyla karşılaşacak.

VBA Aboneliği aralık dışı hatası, erişmeye çalıştığımız nesne mevcut olmadığı için oluşur. Bu, VBA kodlamasında bir hata türüdür ve bu bir "Çalıştırma Süresi Hatası 9" dur. Etkili kod yazmak için kavramları anlamak önemlidir ve kodda verimli bir şekilde hata ayıklamak için VBA kodunuzun hatasını anlamak daha da önemlidir.

Kodlama hatanız varsa ve gittiğinizde bu hatanın ne olduğunu bilmiyorsanız.

Doktor, hastalığın ne olduğunu bilmeden hastasına ilaç veremez. Elbette hem doktorlar hem de hastalar bir hastalık (hata) olduğunu bilir, ancak hastalığı (hatayı) ona ilaç vermekten daha iyi anlamak önemlidir. Hatayı mükemmel bir şekilde anlayabilirseniz, çözümü bulmak çok daha kolaydır.

Bu makaledeki benzer bir notta, genellikle düzenlilikle karşılaştığımız önemli hatalardan birini, yani Excel VBA'da "Abonelik Aralık Dışı" hatasını göreceğiz.

Excel VBA'da Abonelik Kapsam Dışı Hatası nedir?

Örneğin, çalışma kitabının bulunmadığı sayfaya atıfta bulunuyorsanız, Çalıştırma zamanı hatası 9: "Alt Simge Aralık Dışında" alırız .

Sonlandır düğmesine tıklarsanız, alt prosedürü sonlandırır, hata ayıklamayı tıklarsanız, sizi bir hatayla karşılaştığı kod satırına götürür ve yardım sizi Microsoft web sitesi sayfasına götürür.

Neden Abonelik Aralık Dışında Hatası Oluşuyor?

Bir doktor olarak söylediğim gibi, ilacı düşünmeden önce merhumun bulunması önemlidir. VBA Aboneliği aralık dışı hatası, kod satırı girdiğimiz nesneyi okumadığında ortaya çıkar.

Örneğin, aşağıdaki resme bakın. Sheet1, Sheet2, Sheet3 adında üç sayfam var.

Şimdi kodda, "Satış" sayfasını seçmek için kodu yazdım.

Kod:

Alt Makro2 () Sayfaları ("Satış"). Son Alt

Bu kodu F5 tuşunu kullanarak veya manuel olarak çalıştırırsam , Çalışma zamanı hatası 9: "Abonelik Aralık Dışında" ile karşılaşıyorum.

Bunun nedeni, çalışma kitabında bulunmayan "Satış" çalışma sayfası nesnesine erişmeyi denememdir. Bu bir çalışma zamanı hatasıdır çünkü bu hata kodu çalıştırırken meydana gelmiştir.

Aldığımız diğer bir yaygın alt simge hatası, orada olmayan çalışma kitabına başvurduğumuzda ortaya çıkar. Örneğin, aşağıdaki koda bakın.

Kod:

Alt Makro1 () Soluk Wb Çalışma Kitabı Olarak Ayarla Wb = Çalışma Kitapları ("Maaş Sayfası.xlsx") Son Alt

Yukarıdaki kod, değişken WB'nin "Maaş Sayfası.xlsx" çalışma kitabına eşit olması gerektiğini söylüyor. Şu an itibariyle bu çalışma kitabı bilgisayarımda açılmıyor. Bu kodu manuel olarak veya F5 tuşuyla çalıştırırsam , Çalıştırma süresi hatası 9: "Abonelik Aralık Dışında" alacağım .

Bu, bahsettiğim çalışma kitabından kaynaklanıyor, ya şu an için açık değil ya da hiç mevcut değil.

Dizilerde VBA Alt Simge Hatası

Diziyi dinamik dizi olarak bildirdiğinizde ve bir dizinin uzunluğunu tanımlamak için VBA'da DIM veya REDIM kelimesini kullanmazsanız, genellikle VBA Aboneliğini aralık dışı hatası alırız. Örneğin, aşağıdaki koda bakın.

Kod:

Sub Macro3 () Dim MyArray () As Long MyArray (1) = 25 End Sub

Yukarıda, değişkeni bir dizi olarak tanımladım, ancak bir başlangıç ​​ve bitiş noktası atamadım; bunun yerine, hemen ilk diziye 25 değerini atadım.

Bu kodu F5 tuşunu kullanarak veya manuel olarak çalıştırırsam , Çalıştırma süresi hatası 9: "Abonelik Aralık Dışında" alacağız .

Bu sorunu çözmek için Redim sözcüğünü kullanarak bir dizinin uzunluğunu atamam gerekiyor.

Kod:

Sub Macro3 () Dim MyArray () As Long ReDim MyArray (1-5) MyArray (1) = 25 End Sub

Bu kod herhangi bir hata vermez.

VBA Kodunun Sonundaki Hatalar Nasıl Gösterilir?

Kod çalışırken ve çalışırken hatayı görmek istemiyorsanız, ancak sonunda bir hata listesine ihtiyaç duyuyorsanız, "Hataya Devam Etme" hata işleyicisini kullanmanız gerekir. Aşağıdaki koda bakın.

Kod:

Alt Makro1 () Soluk Wb Çalışma Kitabı Olarak Devam Et Hatada Devam Ettir Wb = Çalışma Kitaplarını ("Maaş Sayfası.xlsx") MsgBox Err.Description End Sub

Gördüğümüz gibi, bu kod Çalıştırma zamanı hatası 9'u atacak : "Abonelik Excel VBA'da Aralık Dışında . Ancak, kodu çalıştırırken VBA'da Hata Devam Etme Sırasında hata işleyicisini kullanmam gerekiyor. Herhangi bir hata mesajı almayacağız. Bunun yerine son mesaj kutusu bana bunun gibi hata açıklamasını gösteriyor.

Excel VBA Subscript Out of Range Template'i buradan indirebilirsiniz: - VBA Subscript Out of Range Template

Ilginç makaleler...