Vba hatası 9 (dizin aralık dışında) nasıl düzeltilir?
Dizin aralık dışında (çalışma zamanı: hata 9)
Abonelik Dışı (Çalışma Süresi: Hata 9) hatası, bir nesneye başvurduğunuzda veya kodda bulunmayan bir değişkeni kodda kullanmaya çalıştığınızda oluşur, bu durumda VBA bu hatayı gösterecektir. Yazdığınız her kod benzersiz olduğundan hatanın nedeni de farklı olacaktır.

Aşağıdaki örnekte bir nesne olan “Sayfa1″i etkinleştirmeye çalıştınız. Ancak çalışma kitabında görebileceğiniz gibi, “Sayfa1” adında bir çalışma sayfası yok (bunun yerine “Sayfa2” var), bu nedenle VBA, kodda bir sorun olduğunu size bildirmek için “Abonelik Aralık Dışında” gösteriyor.

Dizin aralık dışında
Dinamik bir dizi bildirmeye çalıştığınızda ancak dizinin uzunluğunu yeniden tanımlamak için DIM ve ReDim deyimlerini kullanmayı unuttuğunuzda “Abonelik Aralık Dışı Hatası” hatasıyla karşılaşmanız gereken başka bir durum olabilir.

Şimdi yukarıdaki kodda “myArray” adında bir diziniz var ve onu dinamik hale getirmek için başlangıçta dizinin uzunluğunu boş bırakıyoruz. Ancak bir öğe eklemeden önce, ReDim ifadesini kullanarak dizinin uzunluğunu yeniden tanımlamanız gerekir.
Bu da yukarıdaki kodda yaptığımız hatadır ve VBA “Script out of range” hatası döndürmüştür.
Sub myMacro() Dim myArray() As Variant myArray(1) = "One" End Sub
Excel’de aralık dışı dizin nasıl düzeltilir?
Bu aralık dışı indeksle baş etmenin en iyi yolu, verimli kodlar yazmak ve yazdığınız kodun hatalarını ayıkladığınızdan emin olmaktır (adım adım).

Bir kodu adım adım çalıştırdığınızda, o kodun hangi satırında hata olduğunu bilmeniz kolaydır çünkü VBA size 9. hataya ilişkin hata mesajını gösterecek ve bu satırı sarı renkle vurgulayacaktır.
Yapabileceğiniz diğer şey, belirli bir hata oluştuğunda hata satırına atlamak için bir “hata işleyicisi” kullanmaktır.
Aşağıdaki kodda sayfayı aktif hale getirecek bir satır yazdık ancak bundan önce hata işleyicisine geçmek için goto ifadesini kullandık. Hata işleyicisinde size Err.xml hatasını içeren bir mesaj gösteren bir mesaj kutusu vardır. Bir hatanın oluştuğunu belirten açıklama.

Yani bu kodu çalıştırdığınızda ve “Sayfa1”, onu etkinleştirmeye çalıştığınız çalışma kitabında bulunmuyor. Size aşağıdaki gibi bir mesaj kutusu gösterecektir.

Ve eğer “Sayfa1” oradaysa, hiçbir mesaj olmayacaktır.
Sub myMacro() Dim wks As Worksheet On Error GoTo myError Sheets("Sheet1").Activate myError: MsgBox "There's an error in the code: " & Err.Description & _ ". That means there's some problem with the sheet " & _ "that you want to activate" End Sub