excel - Worksheet.UsedRange.Rows.Count 返回错误结果

标签 excel vb.net vba excel-2013

在 VB.NET 中,我想获取使用过的行,所以我写道:

Dim objWorksheet As Excel.Worksheet = workbook.Sheets(2)
Dim lastRow = objWorksheet.UsedRange.Rows.Count
lastRow 的数量是比使用的行。我搜索了该网站,有人建议:
Dim range As Excel.Range = objWorkSheet.UsedRange
Dim lastRow = range.Rows.Count
这返回的行数少于实际使用的行数。
解决方案如图:
img1
我找到了 this question 这是对最后使用的行的整体理解。UsedRange.Rows.Count表示从有数据的第一行到有数据的最后一行,这意味着您可以在第一个非空行到最后一个非空行之间有空行,这不会影响结果,但如果第一行为空,结果将比实际的非空行少一,如果前两行为空,结果将少两,所以链接问题说永远不要使用UsedRange.Rows.Count得到最后一行。

最佳答案

尽量避免UsedRange .这可能会产生误导。例如,如果您填写范围 A1:B5并清除 B 列的内容,然后 UsedRange.Columns.Count将返回 2 - 因为 Excel 会记住带有格式的单元格并将它们包含在 UsedRange 中。

更新

要获得真正的最后一列和最后一行,请使用以下代码:

lRealLastRow = _
    Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row
lRealLastColumn = _
    Cells.Find("*", Range("A1"), xlFormulas, , xlByColumns, xlPrevious).Column

更新 2
img2

关于excel - Worksheet.UsedRange.Rows.Count 返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50434444/

相关文章:

arrays - 有没有更快的方法来比较 VBA 中动态数组之间的数据?

c# - 两个日期时间变量何时相等?

excel - 复制范围值和格式

excel - 如何设置默认数字格式以包含千位分隔符 (,)

excel - 将矩阵转换为 3 列表 ('reverse pivot' 、 'unpivot' 、 'flatten' 、 'normalize' )

vb.net - google map 未显示在 vb.net 应用程序中

excel - 循环工作表,排除一些并查找单元格值

excel - 计算具有相同背景颜色的单元格列表

vba - excel中用户窗体的全局工作表变量

mysql - 如何消除数据库表行重复