'***************************************************************************************************
' 最終行の取得サンプル① Module1(Module)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'03/07/25(1.00)新規作成
'03/11/16(1.01)初回修正
'20/02/22(1.10)*.xlsm化、他
'***************************************************************************************************
Option Explicit
'***************************************************************************************************
' ■■■ ワークシート側からの呼び出し処理 ■■■
'***************************************************************************************************
'* 処理名 :GetLastCell1
'* 機能 :最終セルの表示①
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月25日
'* 作成者 :井上 治
'* 更新日 :2020年02月22日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Sub GetLastCell1()
'-----------------------------------------------------------------------------------------------
Dim objSh As Worksheet ' 現在シート
Set objSh = ActiveSheet
' 最終セルを表示
MsgBox objSh.Cells.SpecialCells(xlLastCell).Address
End Sub
'----------------------------------------<< End of Source >>----------------------------------------
① | 「データが登録されている最終行」という意味では「誤解」があり、Excelからすると「使われている最終セル」のようです。 例えば、このシートで入力範囲より広く罫線を引いてから同じ処理をすると、罫線を引いた最終セルが表示されてしまいます。 |
② | 行やセル範囲に対して挿入や消去を行なった場合、SpecialCells(xlLastCell)は誤認する場合があります。縦スクロールバーを下端まで下げた時に空行を表示してしまう時がこれにあたります。この状況はそのブックを保存すると正常に戻ります。 |
③ | SpecialCellsメソッドはWorksheet_SelectionChangeイベントを発生させます。 |
④ | フィルタで表示行を制限している場合、SpecialCells(xlLastCell)は表示されている中での最終セルを指します。 一時的にフィルタを解除させる方法は一番下のコラムをご覧下さい。 |
'***************************************************************************************************
' 最終行の取得サンプル② Module2(Module)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'03/07/25(1.00)新規作成
'03/11/16(1.01)初回修正
'20/02/22(1.10)*.xlsm化、他
'***************************************************************************************************
Option Explicit
'***************************************************************************************************
' ■■■ ワークシート側からの呼び出し処理 ■■■
'***************************************************************************************************
'* 処理名 :GetLastCell2
'* 機能 :最終セルの表示②
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月25日
'* 作成者 :井上 治
'* 更新日 :2020年02月22日
'* 更新者 :井上 治
'* 機能説明:A1セルから下に向かって空白セルの手前を取得
'* 注意事項:
'***************************************************************************************************
Sub GetLastCell2()
'-----------------------------------------------------------------------------------------------
Dim objSh As Worksheet ' 現在シート
Set objSh = ActiveSheet
' 最終セルを表示
MsgBox objSh.Range("$A$1").End(xlDown).Address
End Sub
'----------------------------------------<< End of Source >>----------------------------------------
'***************************************************************************************************
' 最終行の取得サンプル③ Module3(Module)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'03/07/25(1.00)新規作成
'03/11/16(1.01)初回修正
'20/02/22(1.10)*.xlsm化、他
'***************************************************************************************************
Option Explicit
'***************************************************************************************************
' ■■■ ワークシート側からの呼び出し処理 ■■■
'***************************************************************************************************
'* 処理名 :GetLastCell3
'* 機能 :最終セルの表示③
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月25日
'* 作成者 :井上 治
'* 更新日 :2020年02月22日
'* 更新者 :井上 治
'* 機能説明:A列最終行から上に向かって空白でない最初に見つかったセルを取得
'* 注意事項:
'***************************************************************************************************
Sub GetLastCell3()
'-----------------------------------------------------------------------------------------------
Dim objSh As Worksheet ' 現在シート
Set objSh = ActiveSheet
' 最終セルを表示
With objSh
MsgBox .Range("$A$" & .Rows.Count).End(xlUp).Address
End With
End Sub
'----------------------------------------<< End of Source >>----------------------------------------
' フィルタ抽出状態を解除する
With ActiveSheet
If .FilterMode Then .ShowAllData
End With