2012-10-31 2 views
1

일부 워크 시트 형식을 지정하기 위해 vba 대신 interop.excel에 대한 참조를 사용하려고합니다. excel.range 나를 여기에 "&"기호를 사용하는 것을 허용하지 않습니다excel에서 마지막 행을 찾고 excel.range를 사용합니다.

Dim lastrow As Range = excel.Rows.End(XlDirection.xlDown) 
    Dim findme As Range = excel.Range("A1:A" & lastrow) 

:처럼 내 코드 보인다. 마지막 데이터 행은 어떻게 식별해야합니까?

답변

2

, 당신이 바로 lastrow 범위의 속성을 넣어 놓친 것 나쁜 솔루션은 "나는이 그렇게 코드가 될 수있는 lasCell

set lastCell=yourSheet.Range("A1").SpecialCells(xlCellTypeLastCell) 

을 얻을 수있는 우아한 해결책이라고 생각 :

,
Dim lastrow As Range = excel.Range("A1").SpecialCells(xlCellTypeLastCell).Row 
Dim findme As Range = excel.Range("A1:A" & lastrow) 
+0

에 감사드립니다. VBA는 그것에 관해 까다 롭지 않았다. –

0

lastrow가 Range로 정의되어 있으며 문자열과 Range 사이에 문자열 연결을 시도하고 있습니다. "나는이 오래된 스레드 알고

Dim findme As Range = excel.Range("A1:A" & lastrow.row)

+1

AH! 감사! 내가 함께 결국 : 범위 = excel.Rows.End (XlDirection.xlDown)로 '희미한 endRow에' 는'lastrow 낮추기로 범위 = excel.Range으로 정수 = endrow.Row' '희미한 세포 (" A1 : A "& lastrow" 내 다음 질문은 excel.rows.end (xldirection.xldown)에서 어떤 열을 검색합니까? 또는 전체 스프레드 시트의 절대 마지막 행까지 확장됩니까? 놀라운 답변에 대해 –

2

만에 구글 레퍼런스 많이 있습니다 다음 Range Class Reference 보면

+1

위의 내용이 "나쁜 해결책"이라고 생각하면 다른 사람들을 가르치려는 노력에서 무례한 소리가 나지 않지만, 나는 왜 그런지 설명해야한다고 생각한다. SpecialCells는 소스 범위가 포함 된 영역 끝에있는 셀을 나타내는 사용 된 범위의 마지막 셀과 마지막 속성을 찾습니다. 나는 그것이 당신이 달성하기를 원하는 것과 당신이 그것을 원하는 제약 조건에 달려 있다고 생각합니다. –

0

"A"를 봅니다. 그러나 합병 된 셀이 수직으로 이어지게되면 합병의 최상위 셀을 차지하게됩니다. 따라서 A15에서 A20까지 병합 된 셀이 열의 마지막 셀인 경우 A20이 A15 임에도 불구하고 A15를 마지막 셀로 분류합니다. Neolisk의 솔루션이 그런 경우에 최고라는 것을 알았습니다.

0

@Jason Bayldon 항목이있는 마지막 행에서 끝납니다. 공백도 건너 뜁니다. 나는 VB.NET 2010을 사용하고있다. 여기에 샘플 코드가있다.

Dim r2 As Excel.Range 
Dim lastrow As Integer 

r2 = oSheet.Range("Task_ID") 'Task_ID is my column name 
lastrow = r2.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row 'returns last row 
관련 문제