2012-10-31 68 views
1

我正在嘗試使用對interop.excel而不是vba的引用來執行一些工作表格式設置。我的代碼如下所示:在excel中查找最後一行並使用excel.range

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

的excel.range不允許我在這裏使用了「&」的象徵。我應該如何識別我的最後一行數據?

回答

2

望着Range Class Reference,看來你只是錯過了把lastrow範圍的屬性:

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

+0

感謝您的驚人答案。 VBA沒有那麼挑剔.. –

0

lastrow被定義爲一個Range,並且您試圖在一個字符串和一個Range之間進行字符串連接。

+1

AH!謝謝!我結束了: '昏暗endrow作爲範圍= excel.Rows.End(XlDirection.xlDown)' '昏暗LASTROW爲整數= endrow.Row' '昏暗細胞作爲範圍= excel.Range(」 A1:「&lastrow)' 現在我的下一個問題是,哪個列會執行excel.rows.end(xldirection.xldown)搜索?或者它是否擴展到整個電子表格中絕對最後一行? –

2

我知道這是一個古老的線程,但也有很多與谷歌引用「壞的解決方案」,我認爲這是一個完美的解決方案,以獲得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) 
+1

聽起來不粗魯,但爲了教育他人,如果你認爲上述是一個「不好的解決方案」,我想你應該解釋爲什麼。 SpecialCells將找到使用範圍中的最後一個單元格,而End屬性表示包含源範圍的區域末尾的單元格。我認爲這取決於你想達到什麼目標,並且你想在哪些限制內完成。 –

0

它看着「A」。但要小心,如果有一個合併單元格垂直放置,則需要合併的最高單元格。因此,如果從A15到A20(這是該列的最後一個單元格)的合併單元格,它將會將A15歸類爲最後一個單元格,即使其A20。我發現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 
相關問題