2017-05-28 52 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在新的工作表上嘗試該代碼。 –

相關問題