• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

"run-time '9': subscript out of range" hatası

Katılım
25 Ağustos 2010
Mesajlar
56
Excel Vers. ve Dili
2003
Mrb. arkadaşlar

aşağıdaki kodda eksik olan nedir acaba

run-time '9':
subscript out of range

diye bir hata veriyor, gerçi işlem yapıyor ama işlem sonunda hata veriyor


Kod:
Sub sutunlar()
For i = 1 To Worksheets.Count

SAYFA = Worksheets(i).Name
Sheets(SAYFA).Select

  SAG = Right(SAYFA, 4)  'Sağdan 4 harfi gösterir
  SOL = Len(SAYFA) - 4     'Karakter sayısını gösterir
  SON = Left(SAYFA, SOL)   'Soldan 2 harfi gösterir
'--------------------------------------------------------------
If SAG = "MSHR" Then

    Sheets(SON & "MSHR").Select
    Columns("D:H").Select
    Selection.Cut
    Sheets(SON & "UNIT").Select
    Range("I1").Select
    ActiveSheet.Paste
    Application.DisplayAlerts = False
    Sheets(SON & "MSHR").Delete
    
Else
End If

Next i
End Sub
 

Ekli dosyalar

Son düzenleme:
o isimde bir sayfa bulunamamış.

dosya ekleyip ihtiyacı tanımlarsanız belki farklı şekillerde de yardımcı olunabilir.
 
"Seçim aralık dışı" hata iletisini almaktasınız. Sanırım ilgili yapıştırma işlemini yaptıksan sonra sayfayı sildiğiniz için For-Next döngüsünde taşma meydana gelmekte. Silme işleminden sonra (ELSE ifadesinden hemen önce) i = i -1 yazarsanız, sanırım düzelecektir.
 
dosya ilk posta eklendi arkadaşlar, bu arada ExcelF1 dediğin çözüm olmadı yinede fikrin için teşekkür ederim.
 
Merhaba,

Kodların başına,

On Error Resume Next

Yazarsanız hata olsa bile devam eder. For i satırından önce yazabilirsiniz.

.
 
ihtiyaç tam olarak nedir?

On Error Resume Next

ifadesi, bu fadeden sonraki satırlarda herhangi bir hata gelmesi durumunda o hatayı dikkate almadan kodun devam etmesini sağlar.

dikkatli kullanmak lazım gelir. çünkü hatayı pas geçmekten ziyade bilmek ve düzeltmek isteriz. ancak yazdığımız kodun belli bir hatayı zaten üreteceğini ancak bunun önemli olmadığını biliyor ve kodun devam etmesini istiyor isek rahatlıkla kullanabiliriz.
 
Ömer Bey de yazmış. mesaj öncesi konunun içinde olduğumdan görmemiştim.
 
Yardımcı arkadaşlara çok teşekkür ederim On Error Resume Next yazınca son çalışma sayfasında farklı bölümleri sildi hatayı engelledi ancak kod tam olarak işini yapmadı. Bu nedenle bende bu hatayı aşağıdaki şekilde çözdüm, yardımcı olmaya çalışsan arkadaşlara teşekkür ederim. İleride birinin daha işine yarar bulunsun istedim

Kod:
Sub sutunlar()
For i = 1 To Worksheets.Count

    [COLOR="Red"]On Error GoTo ExitProc:[/COLOR]

SAYFA = Worksheets(i).Name
Sheets(SAYFA).Select

  SAG = Right(SAYFA, 4)  
  SOL = Len(SAYFA) - 4   
  SON = Left(SAYFA, SOL) 
'--------------------------------------------------------------
If SAG = "MSHR" Then

    Sheets(SON & "MSHR").Select
    Columns("D:H").Select
    Selection.Cut
    Sheets(SON & "UNIT").Select
    Range("I1").Select
    ActiveSheet.Paste
    Application.DisplayAlerts = False
    Sheets(SON & "MSHR").Delete
    Range("A1").Select
        
Else

End If
Next i
    [COLOR="red"]Exit Sub
    ExitProc:[/COLOR]
End Sub
 
Son düzenleme:
Kod:
Sub sutunlar()
[B][COLOR="Red"]a = Worksheets.Count
For i = a To 1 Step -1[/COLOR][/B]

SAYFA = Worksheets(i).Name
Sheets(SAYFA).Select

  SAG = Right(SAYFA, 4)  'Sağdan 4 harfi gösterir
  SOL = Len(SAYFA) - 4     'Karakter sayısını gösterir
  SON = Left(SAYFA, SOL)   'Soldan 2 harfi gösterir
'--------------------------------------------------------------
If SAG = "MSHR" Then
    Sheets(SON & "MSHR").Select
    Columns("D:H").Select
    Selection.Cut
    Sheets(SON & "UNIT").Select
    Range("I1").Select
    ActiveSheet.Paste
    Application.DisplayAlerts = False
    Sheets(SON & "MSHR").Delete
    Range("A1").Select
End If
Next i
End Sub


Bu şekilde de deneyebilirsiniz. For-Next döngüsünü ters çevirince silme işlemindeki sorun ortadan kalkıyor.
 
Geri
Üst