2008-12-22 9 views
5

मैं एक्सेल वीबीई में वीबीए का उपयोग कर रहा हूं, लेकिन सी # या वीबी ठीक है। अवधारणा को भाषाओं में सच रखना चाहिए।एक्सेल रेंज ऑब्जेक्ट के पीछे चलने का सबसे तेज़ तरीका क्या है?

+0

अरे GollyJer, मैं इस करने का उद्देश्य सिर्फ उत्सुक था। – LeppyR64

+0

यह संगत डेटा की मौजूदा सूची के बीच कई पंक्तियों को डालने के लिए था। – GollyJer

उत्तर

3

सुनिश्चित नहीं है कि आपका क्या मतलब है। आप ऊपर से नीचे की बजाय, नीचे से ऊपर तक जाना चाहते हैं?

यह करना चाहिए:

Dim myrange As Range 
Set myrange = Range("B3:E10") 

Dim row As Integer, col As Integer 
For row = myrange.Rows.Count To 1 Step -1 
    For col = myrange.Columns.Count To 1 Step -1 
     Debug.Print myrange(row, col).Value 
    Next col 
Next row 
+0

अच्छा समाधान ब्रैडसी। +1 – LeppyR64

1

आप एक से अधिक कुछ कोशिकाओं की सीमाओं के साथ काम कर रहे हैं और, सेल संशोधित कर हमेशा एक सरणी में मानों खींच रहा है और उस के साथ काम कर रहा पर विचार की जरूरत नहीं है : कोड और वर्कशीट के बीच बातचीत अपेक्षाकृत (बहुत) महंगा है। यदि आप एक .NET असेंबली से काम कर रहे हैं, तो यह डबल (शायद ट्रिपल, शायद अधिक) हो जाता है क्योंकि राउंड ट्रिप में कई और कदम शामिल होते हैं।

VBA में, कुछ इस तरह:

Dim vals As Variant 
Dim row As Long, col As Long 

vals = Range("A1:Z100") ' or whatever 
For col = UBound(vals,2) To LBound(vals,2) Step -1 
    For row = UBound(vals) To LBound(vals) Step -1 
     DoSomethingInterestingWith vals(row, col) 
    Next 
Next 
संबंधित मुद्दे