2017-05-28 7 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

[This](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

ありがとうございました@ Gary's Student ..あなたのコードにちょうど1つのコメント..ラインnFirstRow = r.Rowは、最初に使用された行が2または3であっても常に1を返します.... nFirstColumn = r.Columnは最初に使用された列の番号を返します。 – user3286479

+0

@ user3286479新しいワークシートでコードを試してください。 –

関連する問題