Vb.net 在excel中查找最后一行并使用excel.range

Vb.net 在excel中查找最后一行并使用excel.range,vb.net,Vb.net,我正在尝试使用interop.excel的引用而不是vba来执行一些工作表格式设置。我的代码如下所示: Dim lastrow As Range = excel.Rows.End(XlDirection.xlDown) Dim findme As Range = excel.Range("A1:A" & lastrow) excel.range不允许我在此处使用&符号。如何识别最后一行数据?lastrow被定义为一个范围,您正在尝试在字符串和范围之间进行字符串连接。la

我正在尝试使用interop.excel的引用而不是vba来执行一些工作表格式设置。我的代码如下所示:

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

excel.range不允许我在此处使用&符号。如何识别最后一行数据?

lastrow被定义为一个范围,您正在尝试在字符串和范围之间进行字符串连接。

lastrow被定义为一个范围,您正在尝试在字符串和范围之间进行字符串连接。

查看,似乎您刚刚错过了放置lastrow范围的Row属性:

Dim findme As Range=excel.RANGA1:A&lastrow.row

查看,您似乎没有放置lastrow范围的row属性:


Dim findme As Range=excel.RangeA1:A&lastrow.row

我知道这是一个旧线程,但有很多google引用的解决方案不好,我认为这是获得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)

我知道这是一个旧的线程,但有很多谷歌参考与坏的解决方案,我认为这是一个优雅的解决方案,以获得拉塞尔

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)

它看起来像A。但是要注意,如果有一个合并的单元格垂直移动,它将占据合并的顶部单元格。因此,如果有一个从A15到A20的合并单元格,这是列的最后一个单元格,那么它会将A15分类为最后一个单元格,即使它是A20。我发现Neolik的解决方案在这种情况下是最好的。

它看起来像a。但是要注意,如果合并单元格垂直,它将占据合并单元格的顶部。因此,如果有一个从A15到A20的合并单元格,这是列的最后一个单元格,那么它会将A15分类为最后一个单元格,即使它是A20。我发现Neolik的解决方案在这种情况下是最好的。

@Jason Bayldon它在最后一行结束,那里有一个条目。它也跳过空格。我正在使用VB.NET2010。下面是示例代码

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

@Jason Bayldon它在有条目的最后一行结束。它也跳过空格。我正在使用VB.NET2010。下面是示例代码

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

啊!!谢谢最后我得到:Dim endrow As Range=excel.Rows.EndXlDirection.xlDown Dim lastrow As Integer=endrow.Row Dim cells As Range=excel.RangeA1:A&lastrow现在我的下一个问题是,excel.Rows.EndXlDirection.xlDown搜索哪一列?还是会延伸到整个电子表格的最后一行?啊!谢谢最后我得到:Dim endrow As Range=excel.Rows.EndXlDirection.xlDown Dim lastrow As Integer=endrow.Row Dim cells As Range=excel.RangeA1:A&lastrow现在我的下一个问题是,excel.Rows.EndXlDirection.xlDown搜索哪一列?或者它会延伸到整个电子表格的最后一行吗?听起来并不粗鲁,但为了教育其他人,如果你认为上面的方法不好,我想你应该解释一下原因。SpecialCells查找已用范围vs End属性中的最后一个单元格,该属性表示包含源范围的区域末尾的单元格。我认为这取决于你想达到什么目标,以及你想在什么样的约束条件下实现。这听起来并不粗鲁,但为了教育他人,如果你认为上述解决方案不好,我认为你应该解释原因。SpecialCells查找已用范围vs End属性中的最后一个单元格,该属性表示包含源范围的区域末尾的单元格。我认为这取决于你想要实现什么,以及你想要在哪些约束条件下实现。