ワークシートで作業している場合は、Ctrl + Endを押してワークシートの最後のセルにジャンプできることを知っています。ショートカットは、データを含む最後の列とデータを含む最後の行の共通部分を表すセルを選択します。したがって、データがある最後の列が列Fであり、データがある最後の行が行27である場合、Ctrl + EndはセルF27を選択します。

マクロからこれと同じタスクを実行するには、次に示すように、非常に単純なコマンドを使用します。

Sub FindLast1()

ActiveCell.SpecialCells(xlLastCell).Select End Sub

これは、Ctrl + Endを押すのと機能的に同じです。ただし(これは大きな問題です)、Excelは、ワークシートで最後に使用された行と列を動的に追跡しません。たとえば、ブックを開いてCtrl + Endを押すと、セルF27に移動するとします。次に、3つの行と1つの列を削除すると、Ctrl + EndでセルE24に移動することが期待されます。そうではありません。ブックを保存して再度開くまで、セルF27に移動します。

これと同じ問題が、FindLast1マクロに表示されるマクロコードに影響します。現在のセッション中に削除した列または行に関係なく、「最も高い」セルに移動します。

必要なのは、ブックを保存して再度開いたかのように、「最後のセル」インジケーターをリセットする方法です。これを行う組み込みのマクロコマンドはありませんが、Excelにリセットを強制する方法はあります。次のようにマクロを調整するだけです。

Sub FindLast2()

x = ActiveSheet.UsedRange.Rows.Count     ActiveCell.SpecialCells(xlLastCell).Select End Sub

このマクロは常に適切なセルに移動します—Ctrl + Endが常に機能することを期待するように機能します。どうやらExcelは、ワークシートの行数のCountプロパティを計算するときに、常に「最後のセル」インジケータをリセットするため、これは機能します。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11526)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。