"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:

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
o isimde bir sayfa bulunamamış.

dosya ekleyip ihtiyacı tanımlarsanız belki farklı şekillerde de yardımcı olunabilir.
 
E

ExcelF1

Misafir
"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.
 
Katılım
25 Ağustos 2010
Mesajlar
56
Excel Vers. ve Dili
2003
dosya ilk posta eklendi arkadaşlar, bu arada ExcelF1 dediğin çözüm olmadı yinede fikrin için teşekkür ederim.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Kodların başına,

On Error Resume Next

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

.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
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.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
Ömer Bey de yazmış. mesaj öncesi konunun içinde olduğumdan görmemiştim.
 
Katılım
25 Ağustos 2010
Mesajlar
56
Excel Vers. ve Dili
2003
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:
E

ExcelF1

Misafir
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.
 
Üst