我正在嘗試使用對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不允許我在這裏使用了「&」的象徵。我應該如何識別我的最後一行數據?
我正在嘗試使用對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不允許我在這裏使用了「&」的象徵。我應該如何識別我的最後一行數據?
望着Range Class Reference,看來你只是錯過了把lastrow
範圍的屬性:
Dim findme As Range = excel.Range("A1:A" & lastrow.row)
lastrow被定義爲一個Range,並且您試圖在一個字符串和一個Range之間進行字符串連接。
AH!謝謝!我結束了: '昏暗endrow作爲範圍= excel.Rows.End(XlDirection.xlDown)' '昏暗LASTROW爲整數= endrow.Row' '昏暗細胞作爲範圍= excel.Range(」 A1:「&lastrow)' 現在我的下一個問題是,哪個列會執行excel.rows.end(xldirection.xldown)搜索?或者它是否擴展到整個電子表格中絕對最後一行? –
我知道這是一個古老的線程,但也有很多與谷歌引用「壞的解決方案」,我認爲這是一個完美的解決方案,以獲得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)
聽起來不粗魯,但爲了教育他人,如果你認爲上述是一個「不好的解決方案」,我想你應該解釋爲什麼。 SpecialCells將找到使用範圍中的最後一個單元格,而End屬性表示包含源範圍的區域末尾的單元格。我認爲這取決於你想達到什麼目標,並且你想在哪些限制內完成。 –
它看着「A」。但要小心,如果有一個合併單元格垂直放置,則需要合併的最高單元格。因此,如果從A15到A20(這是該列的最後一個單元格)的合併單元格,它將會將A15歸類爲最後一個單元格,即使其A20。我發現Neolisk的解決方案在這種情況下是最好的。
@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
感謝您的驚人答案。 VBA沒有那麼挑剔.. –