2012-07-21 2 views
7

목표 :
변수에는 특정 시트의 행 수가 있어야합니다.시트의 행 수

문제점 :
Excel VBA의 구문 코드는 시트의 행 수를 계산하는 데 필요합니까?

+0

이,'Worksheet.Rows.Count' 그것을 할 것입니다. 다른 것을 의미한다면 저희에게 알려주십시오. –

답변

14

에 데이터가 있다고 가정하지만 치료를 할 필요가 :

이 작업을 수행하는 더 좋은 방법은 케어. 그것은 몇 가지 결점/잡았다. 엑셀이 사용 된 범위를 잘 추적하지 못하는 것이 알려진 문제입니다. VBA를 통해 사용 된 범위를 참조하면 현재 사용 된 범위로 값이 재설정됩니다. 이는 종종 (

Dim lRowCount as Long 

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

그러나 통합 문서의 상단에 빈 행을 가지고, 그래서 만약이 당신에게 사용 범위의 수를 줄 것이다주의 : 그래서 당신이 사용 범위를 점점이 서브 프로 시저를 실행하려고 사람들은 필터 기준 등을위한 공간을 남겨 두어야합니다.) 그런 다음 계산되지 않습니다. usedrange 메소드는 형식화의 영향을받을 수도 있습니다.

당신은 내가 당신이 더 신뢰할 찾기 방법을 사용할 수 있습니다, 당신이 원하는 무슨 생각 인 사용 마지막 행을 원하는 경우

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 

이 각 행이 usedrange 방법은 내 즐겨 찾기 중 하나입니다 사용하여 열 1.

관련 문제