• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü VBA Makro "Run-time error 9: Subscript out of range" Hatası ve Sayfa Kopyalama Sorunu

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

gereklialan21

Yeni Üye
Katılım
15 Şub 2025
Mesajlar
2
Aldığı beğeni
2
Excel V
Office 2010 TR
Konu Sahibi
Windows 10 Google Chrome 152
Değerli hocalarım, iyi forumlar dilerim.Yazdığım bir veri aktarım makrosunda bir yerde garip bir hata alıyorum ve iş yarıda kalıyor. Kodun amacı, ana sayfadaki verileri süzüp "Rapor_2026" isimli başka bir sayfaya aktarmak.Kod satırında Sheets("Rapor_2026").Select veya kopyalama aşamasına geldiğinde Excel çat diye duruyor ve "Run-time error '9': Subscript out of range" hatası veriyor. Sayfa ismini kontrol ediyorum, gözle görülür bir harif veya boşluk hatası yok gibi duruyor.Bu hatanın temel sebebi ne olabilir? Bir de kodun bu tarz sayfa adı bulamama durumlarında tamamen çökmesini engellemek için nasıl bir On Error hata tuzağı kurmalıyım ki hata verirse o satırı atlasın? Çalışma kitabım ektedir, desteklerinizi bekliyorum.
 
Çözüm
Değerli hocalarım, iyi forumlar dilerim.Yazdığım bir veri aktarım makrosunda bir yerde garip bir hata alıyorum ve iş yarıda kalıyor. Kodun amacı, ana sayfadaki verileri süzüp "Rapor_2026" isimli başka bir sayfaya aktarmak.Kod satırında Sheets("Rapor_2026").Select veya kopyalama aşamasına geldiğinde Excel çat diye duruyor ve "Run-time error '9': Subscript out of range" hatası veriyor. Sayfa ismini kontrol ediyorum, gözle görülür bir harif veya boşluk hatası yok gibi duruyor.Bu hatanın temel sebebi ne olabilir? Bir de kodun bu tarz sayfa adı bulamama durumlarında tamamen çökmesini engellemek için nasıl bir On Error hata tuzağı kurmalıyım ki hata verirse o satırı atlasın? Çalışma kitabım ektedir, desteklerinizi bekliyorum.
Bu...
Windows 10 Google Chrome 152
Değerli hocalarım, iyi forumlar dilerim.Yazdığım bir veri aktarım makrosunda bir yerde garip bir hata alıyorum ve iş yarıda kalıyor. Kodun amacı, ana sayfadaki verileri süzüp "Rapor_2026" isimli başka bir sayfaya aktarmak.Kod satırında Sheets("Rapor_2026").Select veya kopyalama aşamasına geldiğinde Excel çat diye duruyor ve "Run-time error '9': Subscript out of range" hatası veriyor. Sayfa ismini kontrol ediyorum, gözle görülür bir harif veya boşluk hatası yok gibi duruyor.Bu hatanın temel sebebi ne olabilir? Bir de kodun bu tarz sayfa adı bulamama durumlarında tamamen çökmesini engellemek için nasıl bir On Error hata tuzağı kurmalıyım ki hata verirse o satırı atlasın? Çalışma kitabım ektedir, desteklerinizi bekliyorum.
Bu hata genelde kodda görünen bir problemden değil, Excel'in aradığınız sayfayı bulamamasından kaynaklanır.

İlk olarak sayfa adını kontrol edin. Başında veya sonunda boşluk olabilir. Örneğin:

" Rapor_2026 " " Rapor_2026" "Rapor_2026 " şeklinde yazılmış olabilir.

Bir de ActiveWorkbook konusuna dikkat edin. Kod çalışırken başka bir Excel dosyası aktifse:

Sheets("Rapor_2026") ifadesi yanlış dosyada arama yapabilir.

Bu yüzden mümkün olduğunca:
ThisWorkbook.Worksheets("Rapor_2026") kullanmak daha güvenlidir.

Kodun ilgili satırda hata verip tamamen durmasını istemiyorsanız On Error Resume Next kullanılabilir. Ama bunu tüm kodun başına koymak doğru değil. Sadece problem çıkarabilecek satırda kullanıp hemen kapatmak gerekir:

On Error Resume Next
Set ws = ThisWorkbook.Worksheets("Rapor_2026")
On Error GoTo 0<br><br>If ws Is Nothing Then ' Sayfa bulunamadı
Exit Sub
End If
Buradaki mantık basit: hata olursa Excel'i durdurmuyoruz, ws değişkeninin boş kalıp kalmadığını kontrol ediyoruz.

Ayrıca On Error Resume Next kullandıktan sonra mutlaka On Error GoTo 0 ile normal hata yakalamaya dönmek önemli. Yoksa kodun ilerleyen bölümlerindeki gerçek hatalar da sessizce geçilebilir.
 
Çözüm
Konu Sahibi
Android 10 Google Chrome 152
Bu hata genelde kodda görünen bir problemden değil, Excel'in aradığınız sayfayı bulamamasından kaynaklanır.

İlk olarak sayfa adını kontrol edin. Başında veya sonunda boşluk olabilir. Örneğin:

" Rapor_2026 " " Rapor_2026" "Rapor_2026 " şeklinde yazılmış olabilir.

Bir de ActiveWorkbook konusuna dikkat edin. Kod çalışırken başka bir Excel dosyası aktifse:

Sheets("Rapor_2026") ifadesi yanlış dosyada arama yapabilir.

Bu yüzden mümkün olduğunca:
ThisWorkbook.Worksheets("Rapor_2026") kullanmak daha güvenlidir.

Kodun ilgili satırda hata verip tamamen durmasını istemiyorsanız On Error Resume Next kullanılabilir. Ama bunu tüm kodun başına koymak doğru değil. Sadece problem çıkarabilecek satırda kullanıp hemen kapatmak gerekir:

On Error Resume Next
Set ws = ThisWorkbook.Worksheets("Rapor_2026")
On Error GoTo 0<br><br>If ws Is Nothing Then ' Sayfa bulunamadı
Exit Sub
End If
Buradaki mantık basit: hata olursa Excel'i durdurmuyoruz, ws değişkeninin boş kalıp kalmadığını kontrol ediyoruz.

Ayrıca On Error Resume Next kullandıktan sonra mutlaka On Error GoTo 0 ile normal hata yakalamaya dönmek önemli. Yoksa kodun ilerleyen bölümlerindeki gerçek hatalar da sessizce geçilebilir.
SNNAY hocam harikasınız, çok teşekkür ederim!

Cevabınızı okuduktan sonra hemen dosyamdaki sayfa isimlerini didik didik ettim. Meğer sekme isminin en sonunda gözle hiç fark edilmeyen tek bir boşluk karakteri kalmış. Sayfayı "Rapor_2026 " diye açtığım için kod patlıyormuş. Boşluğu silince kod tıkır tıkır çalıştı.

Ayrıca paylaştığınız On Error Resume Next ve On Error GoTo 0 arasındaki If ws Is Nothing mantığı tek kelimeyle muazzam. Kodun ilerleyen kısımlarındaki hataları maskelememek için hata tuzağını hemen kapatmak gerektiği uyarınız da çok ufuk açıcı oldu. Bu blok yapısını hemen ana koduma entegre ettim, artık sayfa silinse bile makro çökmeden kullanıcıya uyarı verip duruyor.
Emeğinize ve bilginize sağlık
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst