シート内の行を含む最後のデータを見つけるためのこの方法を見つけました:
ws.Range("A65536").End(xlUp).row
シート内の列を含む最後のデータを見つけるための同様の方法はありますか?
これを行う方法はたくさんあります。最も信頼できるのは検索です。
Dim rLastCell As Range
Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
MsgBox ("The last used column is: " & rLastCell.Column)
特定の行で使用されている最後の列を検索する場合は、次を使用できます。
Dim lColumn As Long
lColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column
使用範囲の使用(信頼性が低い):
Dim lColumn As Long
lColumn = ws.UsedRange.Columns.Count
列Aにデータがない場合、使用範囲の使用は機能しません。使用範囲に関する別の問題については、次を参照してください。
使用範囲のリセットについては、こちらをご覧ください。
私はこれが古いことを知っていますが、私はこれを多くの方法でテストしました。
行番号
Row = ws.Cells.Find(What:="*", After:=[A1] , SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
コラムレター
ColumnLetter = Split(ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Cells.Address(1, 0), "$")(0)
列番号
ColumnNumber = ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
上記の@ReadifyのUsedRange
回答のコードを変更して、開始列が空白であるかどうかにかかわらず、最後に使用された列を取得できると思います。
したがって、これは次lColumn = ws.UsedRange.Columns.Count
のように変更されました
これlColumn = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1
により、常に信頼できる結果が得られます
?Sheet1.UsedRange.Column + Sheet1.UsedRange.Columns.Count - 1
上記の行9
は、即時ウィンドウに表示されます。
ここに何か役に立ちそうなものがあります。データを含む行に基づいて列全体を選択します。この場合、5 行目を使用しています。
Dim lColumn As Long
lColumn = ActiveSheet.Cells(5, Columns.Count).End(xlToLeft).Column
MsgBox ("The last used column is: " & lColumn)