why i use Worksheet.UsedRange.Rows.Count got wrong result

前端 未结 4 1945
孤城傲影
孤城傲影 2020-12-06 09:00

In VB.NET I want to get the used rows so I wrote that:

Dim objWorksheet As Excel.Worksheet = workbook.Sheets(2)
Dim lastRow = objWorksheet.UsedRange.Rows.Coun         


        
4条回答
  •  醉酒成梦
    2020-12-06 09:31

    I'm using Excel 2013, and as far as I can see the UsedRange and UsedRange.Count Properties work correctly

    In previous versions I can remember noticing that they were unreliable, and I think this may be the reasons of some older posts, eg stackoverflow.com/questions/11169445...

    Note that the UsedRange is a Single Rectangular Area bounded by the Top-, Right-, Bottom-, and Left-most Non-Blank Cells, so that the Last Used Row is thus

    ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1  
    

    Note also that UsedRange INCLUDES all Cells that have Any Content, for example a Border, Interior Coloring or a Comment, not just those with a Value or a Formula

    Depending on what you are trying to achieve, using the SpecialCells and Find Methods may be preferable; for example the Last Used Row can also be found using

    ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    

提交回复
热议问题