2017-05-28 98 views
0

我想要获取使用范围的最后一行和一列。vba-使用范围的最后一行和一列

得到最后的行和列我用下面

Dim varCurrentUsedRange As Variant 
Dim LastRow As Long 
Dim LastCol As Long 

varCurrentUsedRange = ActiveSheet.UsedRange 

LastRow = UBound(varCurrentUsedRange) 
LastCol = UBound(varCurrentUsedRange , 2) 

代码此代码返回正是上次使用的行数,甚至是第一个使用小区不在行1

但返回使用的列数而不是最后使用的列。

例如,如果第一个使用的列是2,最后一个是6,则预期返回6,但它只返回5(使用的列数)。

那么如何得到最后使用的列号而不管起始列?

预先感谢您。

+1

你见过[这](https://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba/11169920#11169920) –

回答

1

考虑以下几点:

Sub range_reporter() 
    Dim r As Range 
    Dim s As String 
    Dim nLastRow As Long, nLastColumn As Long 
    Dim nFirstRow As Long, nFirstColumn As Long 

    ActiveSheet.UsedRange 
    Set r = ActiveSheet.UsedRange 

    nLastRow = r.Rows.Count + r.Row - 1 
    MsgBox ("last row " & nLastRow) 

    nLastColumn = r.Columns.Count + r.Column - 1 
    MsgBox ("last column " & nLastColumn) 

    nFirstRow = r.Row 
    MsgBox ("first row " & nFirstRow) 

    nFirstColumn = r.Column 
    MsgBox ("first column " & nFirstColumn) 

    numrow = r.Rows.Count 
    MsgBox ("number of rows " & numrow) 

    numcol = r.Columns.Count 
    MsgBox ("number of columns " & numcol) 
End Sub 

它定义一些UsedRange的性质。
它不依赖于创建内部VBA阵列。

+0

非常感谢你@加里的学生..对你的代码只有一条评论..行nFirstRow = r.Row总是返回1,即使第一个使用的行是2或3 .... nFirstColumn = r.Column返回第一个使用列的数字。 – user3286479

+0

@ user3286479在新的工作表上尝试该代码。 –

相关问题