2012-07-21 15 views
7

लक्ष्य:
एक चर में एक विशिष्ट शीट से पंक्तियों की मात्रा होनी चाहिए।शीट में पंक्तियों की मात्रा

समस्या:
एक्सेल वीबीए में क्या वाक्यविन्यास कोड मुझे चादर से पंक्तियों की मात्रा गिनने की आवश्यकता है?

+0

आप कुल पंक्तियों का मतलब है, तो 'Worksheet.Rows.Count' यह करना होगा। यदि आपका मतलब कुछ और है, तो हमें बताएं। –

उत्तर

14

में डेटा है कि का उपयोग करते हुए usedrange विधि मेरे पसंदीदा में से एक है, लेकिन इसके साथ व्यवहार किया जाना चाहिए देखभाल। इसमें कुछ त्रुटियां/गेटचास हैं। यह एक ज्ञात समस्या है कि एक्सेल उपयोग की गई सीमा का बहुत अच्छा ट्रैक नहीं रखता है। वीबीए के माध्यम से उपयोग की जाने वाली रेंज का कोई भी संदर्भ मूल्य को वर्तमान उपयोग की गई सीमा तक रीसेट करेगा।

Dim lRowCount as Long 

Application.ActiveSheet.UsedRange 
lRowCount = Worksheets("MySheet").UsedRange.Rows.Count 

लेकिन ध्यान रखें यह आप इस्तेमाल किया रेंज गिनती दे देंगे हो सकता है, इसलिए यदि आप अपनी कार्यपुस्तिका के शीर्ष पर रिक्त पंक्तियों है (जो अक्सर: तो यह उप प्रक्रिया है जब आप इस्तेमाल किया रेंज हो रही है चल रहा है की कोशिश लोग फ़िल्टर मानदंड आदि जैसी चीजों के लिए जगह छोड़ने के लिए करते हैं) तो उन्हें गिना नहीं जाएगा। प्रयुक्त विधि से स्वरूपित विधि भी प्रभावित हो सकती है।

आप इस्तेमाल किया अंतिम पंक्ति, चाहते हैं जो है मैं क्या लगता है कि आप चाहते हैं, तो आप खोज विधि है जो और अधिक विश्वसनीय है का उपयोग कर सकते हैं:

Dim rLastCell As Range 
Dim lLastRow As Long 

Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _ 
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False) 

If Not rLastCell Is Nothing Then lLastRow = rLastCell.Row 

आप जानते हैं कि आप डेटा के साथ कम से कम एक सेल है तो उस में है, तो आप करने के लिए ऊपर को आसान बनाने में कर सकते हैं:

Dim lLastRow As Long 

lLastRow = ActiveSheet.Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _ 
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row 

See here regarding used range I spoke about above

5

तुम भी कोशिश कर सकते हैं:

i = Sheets("SheetName").UsedRange.Rows.Count 

बहरहाल, यह एक छोटे से गाड़ी प्राप्त कर सकते हैं अगर आप को हटाने और पंक्तियों समाशोधन शुरू करते हैं।

यह करने के लिए एक बेहतर तरीका है:

i = Cells(Sheets("SheetName").Rows.Count, 1).End(xlup).Row 

इसमें यह माना जाता प्रत्येक पंक्ति स्तंभ 1.

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