• DİKKAT

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

Run-Time erorr 1004 Belirlenen koleksiyona olan dizin sınırlar dişinda.

Katılım
3 Mart 2009
Mesajlar
519
Excel Vers. ve Dili
excel 2003 tr
Bu kod neden bu hatayı veriyor arkadaşlar.?

Kod:
Sub Obj_Sil_Ekle()
Dim tw As ThisWorkbook
Dim ws1 As Worksheet
dim r

Set tw = ThisWorkbook
Set ws1 = tw.Worksheets(tw.ActiveSheet.Name)

For r = 1 To ws1.OLEObjects.Count ' hata alınan kod satırı makroları ayrı sub() içine koydugumuzda hata almıyor nedeni nedir ?
ws1.OLEObjects(r).Delete
Next r

If ws1.OLEObjects.Count = 0 Then
Dim a , i
  With ws1.OLEObjects
        For i = 1 To 22
        Set lbl = .Add(ClassType:="Forms.TextBox.1")
        lbl.Top = lbl.Top * a
        Debug.Print lbl.Name
        Next i
    End With
   
End If

End Sub
 
Merhaba.

ws1.OLEObjects(r).Delete

satırındaki "r" yerine "1" yazın

Aşağıdaki şekilde olacak.

ws1.OLEObjects(1).Delete
 
Problem aşağıdaki satırdan kaynaklanıyor....

Kod:
For r = 1 To ws1.OLEObjects.Count


Bu satırı aşağıdakiyle değiştirirseniz, hata almazsınız...

Kod:
For r = ws1.OLEObjects.Count To 1 Step -1

.
 
ws1.OLEObjects(1).Delete dendiğinde birinci nesne silindiğinden ikinci nesnenin indexi artık 1' dir. Yani indexlerde kayma olur. For sayacı, ws1.OLEObjects.Count olduğunda koleksiyonda tek nesne kaldığı (oraya kadar bile kalmaz) için hata oluşur. Bu nedenle en son indexten silmeye başlanılır.
 
ws1.OLEObjects(1).Delete dendiğinde birinci nesne silindiğinden ikinci nesnenin indexi artık 1' dir. Yani indexlerde kayma olur. For sayacı, ws1.OLEObjects.Count olduğunda koleksiyonda tek nesne kaldığı (oraya kadar bile kalmaz) için hata oluşur. Bu nedenle en son indexten silmeye başlanılır.

Evet ben de o yüzden bu öneride bulundum.

1. indexli nesne her silindiğinde 2. indexli nesnenin indexi 1. olacaktır.
1. indexli nesne değişse bile tüm nesneler bitinceye kadar mutlaka var olacaktır.

Bu yöntem ile silmeye sondan başlamaya gerek yoktur.
 
Teşekürler arkadaşlar
 
Geri
Üst