マクロで最後に使用されたセルを見つける(Microsoft Excel)
ワークシートで作業している場合は、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トレーニングのソースです。
このヒント(2271)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
linkマクロで最後に使用されたセルの検索。