2012-07-21 32 views
7

Hedef:
Bir değişken belirli bir sayfadaki satırların miktarını içermelidir.Sayfadaki satır sayısı

Sorun:
Excel VBA'da hangi sözdizimi kodu sayfadan satır sayısını saymalıyım?

+0

, 'Worksheet.Rows.Count' yapacak. Başka bir şey ifade ederseniz, bize bildirin. –

cevap

14

verileri olduğunu varsayar ama birlikte tedavi edilmesi gerekir:

Bunu yapmak için daha iyi bir yoldur bakım. Birkaç kusurları/gotchas var. Excel'in kullanılan menzili çok iyi takip etmediği bilinen bir sorundur. VBA ile kullanılan aralığa herhangi bir referans, değeri mevcut kullanılan aralığa sıfırlar. hangi sıklıkla (

Dim lRowCount as Long 

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

Ama siz çalışma kitabında üstündeki boş satırlar varsa bu yüzden, bu size kullanılan aralık sayısını verecektir unutmayın: Yani kullanılan aralık alıyorsanız bu alt yordamı denemenizi insanlar filtre kriterleri gibi şeyler için yer bırakmak zorundadırlar) sonra sayılmayacaktır. Usedrange yöntemi formatlamadan da etkilenebilir.

Eğer ben o zaman daha güvenilir bulmak yöntemini kullanabilirsiniz, istediğiniz ne düşündüğünü hangi kullanılan son satırı, isterseniz:

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 

Eğer verilerle en az bir hücre olduğunu biliyorsanız içinde, o zaman yukarıdaki kolaylaştırabilirsiniz: Eğer toplam satırları bahsediyorsan

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

Ayrıca deneyebilirsiniz: Silmekte ve satırları temizleyerek başlarsan

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

Ancak bu biraz arabası alabilirsiniz.

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

Bu her satır UsedRange yöntemi benim favorilerimden biri kullanma sütunda 1.

İlgili konular