2012-08-13 16 views
10

में 'सेल' ऑब्जेक्ट कैसे प्राप्त करें, इसलिए मैं प्रत्येक लूप के लिए पंक्तियों के समूह के माध्यम से जाने के लिए उपयोग कर रहा था। मैं एक समस्या में भाग गया जहां मैं पंक्तियों को हटा रहा था और यह एक पंक्ति को छोड़ने के कारण उत्पन्न कर रहा था, इसलिए मैं लूप के दौरान एक बदल गया है।एक्सेल VBA

समस्या जो मैं कर रहा हूं वह 'सेल' ऑब्जेक्ट प्राप्त करने का प्रयास कर रहा है। इससे पहले जब मैं था:

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

मैं की तरह

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

आदि बातें कर सकता है मैं उपयोग करने की कोशिश:

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

लेकिन यह है कि सिर्फ सी सेल का मान देता है। मैं वास्तविक सेल ऑब्जेक्ट कैसे प्राप्त करूं?

धन्यवाद

उत्तर

14

जब आप पंक्तियों का हटाया, यह हमेशा नीचे से ऊपर जाने के लिए सबसे अच्छा है। आपकी विशेष समस्या यह है कि आपको सेट कीवर्ड को "लेट" सी को श्रेणी मान के बजाय श्रेणी ऑब्जेक्ट पर सेट करने के लिए सेट कीवर्ड की आवश्यकता है। रेंज की एक डिफ़ॉल्ट संपत्ति, मूल्य है, और जब आप ऐसी संपत्ति को छोड़ देते हैं जिसका उपयोग किया जाता है। इसी कारण से, ऑब्जेक्ट चर निर्दिष्ट करते समय आपको सेट का उपयोग करना होगा। पंक्तियों को हटाने और ऑब्जेक्ट चर निर्दिष्ट करने के लिए पिछड़ा लूपिंग का एक उदाहरण यहां दिया गया है।

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

युक्तियों के लिए धन्यवाद। जब मैंने जोड़ा यह सेट सब कुछ तय किया। –

+1

+ 1 अच्छा स्पष्टीकरण। –

संबंधित मुद्दे