目次

目的

  • あるセルを基準にして Excel のワークシートに入力されているデータの上下左右の端を選択したい。
  • データが何行目まで入力されているか知りたい。

以下の画像を例にしますと・・・

基準セル = D4
上端のセル = D2
下端のセル = D6
左端のセル = B4
右端のセル = F4

になります。これはキーボードショートカットの Ctrl + ↑↓←→ と同じ動作になると思います。これと同じ動作を Excel VBA のマクロで行ってみたいと思います。

Excel の画面。基準セル、上端セル、下端セル、左端セル、右端セルのイメージ。
基準セルから見て上下左右のセルを選択したい。

目次まで戻る

その方法の一例

以下 4 つのマクロは上下左右端のセルを選択するマクロです。 End プロパティというものを使用しています。 End() プロパティのパラメータは、 xlUp 、 xlDown 、xlToLeft 、 xlToRight の 4 タイプを指定可能です。

Excel VBA のソースコード例:

Sub ExcelVBA_002467_上端のセルを選択()

Range("D4").End(xlUp).Select '「D4」セルを基準にして「上端」のセルを選択します。

End Sub

「 Range("D4").End(xlUp).Select 」の行で、 D4 セルを基点にして、上端のセルを選択しています。 D2 セルが選択状態になると思います。

Excel VBA のソースコード例:

Sub ExcelVBA_002467_下端のセルを選択()

Range("D4").End(xlDown).Select '「D4」セルを基準にして「下端」のセルを選択します。

End Sub

下端のセルを選択しています。 D6 セルが選択状態になると思います。

Excel VBA のソースコード例:

Sub ExcelVBA_002467_左端のセルを選択()

Range("D4").End(xlToLeft).Select '「D4」セルを基準にして「左端」のセルを選択します。

End Sub

左端のセルを選択しています。 B4 セルが選択状態になると思います。

Excel VBA のソースコード例:

Sub ExcelVBA_002467_右端のセルを選択()

Range("D4").End(xlToRight).Select '「D4」セルを基準にして「右端」のセルを選択します。

End Sub

左端のセルを選択しています。 F4 セルが選択状態になると思います。

以下のマクロでは、上下左右の端のセルのアドレスと行番号、列番号を取得しています。 Debug.Print の出力の時に出力したい内容を , (カンマ)で区切っていますが、これは正式なやりかたではないかもしれません。出力してみると一定の幅(スペース)があいて出力されるので自分流で使用しています。

Excel VBA のソースコード例:

Sub ExcelVBA_002467_上下左右端セルのアドレスと行番号と列番号を取得()

    With Range("D4") 'Range("D4") を対象にして With ステートメントというものを使用しています。これ以降 Range("D4").end(xlup) と書くところを .end(xlup) と書けば良く、 Range("D4") の記述を省略できるようです。

        '上端取得
        Debug.Print "[ 上端セルの情報 ]"
        Debug.Print "Address", .End(xlUp).Address(False, False, xlA1)
        Debug.Print "Row", .End(xlUp).Row
        Debug.Print "Column", .End(xlUp).Column
        
        '下端取得
        Debug.Print "[ 下端セルの情報 ]"
        Debug.Print "Address", .End(xlDown).Address(False, False, xlA1)
        Debug.Print "Row", .End(xlDown).Row
        Debug.Print "Column", .End(xlDown).Column
        
        '左端取得
        Debug.Print "[ 左端セルの情報 ]"
        Debug.Print "Address", .End(xlToLeft).Address(False, False, xlA1)
        Debug.Print "Row", .End(xlToLeft).Row
        Debug.Print "Column", .End(xlToLeft).Column
        
        '右端取得
        Debug.Print "[ 右端セルの情報 ]"
        Debug.Print "Address", .End(xlToRight).Address(False, False, xlA1)
        Debug.Print "Row", .End(xlToRight).Row
        Debug.Print "Column", .End(xlToRight).Column

    End With

End Sub

上のマクロの実行結果は以下のようになりました。イミディエイトウィンドウへの出力結果です。上下左右端のセルの情報を取得して調べることが出来ました。

イミディエイトウィンドウへの出力結果:

[ 上端セルの情報 ]
Address D2
Row 2
Column 4
[ 下端セルの情報 ]
Address D6
Row 6
Column 4
[ 左端セルの情報 ]
Address B4
Row 4
Column 2
[ 右端セルの情報 ]
Address F4
Row 4
Column 6

目次まで戻る

テスト環境

  • Windows 10
  • Microsoft Office Excel 2003

目次まで戻る

あとがき

Excel VBA カテゴリの投稿は目的、題材、方法、テスト環境の大項目に分けて、マクロ名も統一感のあるものにして・・・とテンプレートのように投稿を書いていこうと思っていましたが、やはり自由な書式で書いていこうと思います。

以上、閲覧ありがとうございました。

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿