2012-08-13 17 views
10

Bu yüzden her satır için bir dizi satırdan geçmek için kullanıyorum. Satırları sildiğim bir soruna rastladım ve bir satırın atlanmasına neden oluyordu, bu yüzden döngü sırasında bir değişime geçtim.excel'de bir 'Hücre' nesnesinin nasıl elde edileceği VBA

Yaşadığım sorun bir 'hücre' nesnesi almaya çalışıyor. Ben varken Önce:

For Each C In Worksheets("Blah").Range("A2:A" & lastRow).Cells 

Ben

C.Offset(1, 0) 
C.Value = "Troy" 

Vb gibi şeyler yapabileceğini kullanıyorum çalıştı:

C = Worksheets("Blah").Cells(iRow, 2) 

ama bu sadece Cl hücrenin değerini verir. Gerçek hücre nesnesini nasıl alabilirim? satırları sildiğinizde, aşağıdan yukarıya doğru gitmek için her zaman en iyisidir

Teşekkür

cevap

14

. Özel probleminiz, C'yi aralık aralığına "Let" C yerine aralık nesnesine ayarlamak için Set anahtar sözcüğüne ihtiyacınız olmasıdır. Range'lerin varsayılan özelliği, Value değeri vardır ve mülkün kullanıldığı bir mülkü çıkardığınızda. Bu nedenle, nesne değişkenleri atarken Set'i kullanmanız gerekir. Burada, satırları silmek ve bir nesne değişkeni atamak için geriye doğru döngü örneği.

Sub DeleteRows() 

    Dim i As Long 
    Dim rRng As Range 
    Dim rCell As Range 

    Set rRng = Sheet1.Range("A1:A9") 

    For i = rRng.Rows.Count To 1 Step -1 
     Set rCell = rRng.Cells(i, 1) 
     If rCell.Value Mod 2 = 1 Then 
      rCell.EntireRow.Delete 
     End If 
    Next i 

End Sub 
+0

İpuçları için teşekkürler. Eklediğimde ayarla her şeyi sabitledim. –

+1

+ 1 Güzel Açıklama. –

İlgili konular