データの入っている表を一括で選択する方法2(Excel VBA)

【本日のミッション】

データが続いて入力されていない表を、Excel VBAで一気に選択せよ。(複数行コード)

ミッションの概要

先日、データの入っている表を一括で選択する方法1(Excel VBA)にて、一括選択できなかったこちらの表。

こういう表を選択する方法を考えます。

実業務で出てくる表は、縦の行数、横の列数が固定されている場合って少ないんですよね。

データは、どんどん増えますし、ちょっと業務の内容が変わると項目も増減しますよね。

なので、処理時に最終行番号と最終列番号を取得し、表を選択します。

■スポンサーリンク

ファイルの準備とプロシージャ

このシートをアクティブにした状態で、Alt+F11でVsual Basic Editerを起動します。

[挿入]-[標準モジュール]で新規モジュールを作成し、下記の通りコードを記入します。

Sub 表を一括選択2()
    '【変数】
    Dim e_row As Long '最終行
    Dim e_col As Long '最終列

    '■変数セット
    'セルB1048576からCtrl+↑の行番号を変数「e_row」へセット
    e_row = Cells(Rows.Count, 2).End(xlUp).Row

    'セルXFD3からCtrl+←の列番号を変数「e_col」へセット
    e_col = Cells(3, Columns.Count).End(xlToLeft).Column

    '■表を選択
    Range(Range("B3"), Cells(e_row, e_col)).Select

End Sub

記入したプロシージャのどこかにカーソルを置いてF5キーをクリックすると、この通り。表がきちんと選択できました。

最終行・最終列の取得

最終行・最終列の取得には、「Endプロパティ」を使用します。

Rangeオブジェクト.End(方向)
方向 内容 キーボード操作
xlUp 上方向 Ctrl+↑
xlDown 下方向 Ctrl+↓
xlToLeft 左方向 Ctrl+←
xlToRight 右方法 Ctrl+→

e_row =Cells(Rows.Count, 2).End(xlUp).Row

Cells(Rows.Count, 2)→「セルB1048576」のことです。
「セルB1048576」からCtrl+↑をすると「セルB13」を選択しますよね。

その「セルB13」の行番号「13」を変数e_rowに入れています。

e_col = Cells(3, Columns.Count).End(xlToLeft).Column

Cells(3, Columns.Count)→セル「XFD3」のことです。

「XFD3」からCtrl+←をすると「セルE3」を選択しますよね。

その「セルE3」の列番号「5」を変数e_colに入れています。

列番号「5」はA→B→C→D→E 5番目の列ということです。

表の最終セルの指定

これらのe_rowとe_colを使って

Cells(e_row, e_col)

とすることで、「セルE13」を指定することができます。

Range(Range(“B3”), Cells(e_row, e_col)).Select

あとは表の左上の「セルB3」から表の右下の「セルE13」で表を選択することができます。

参照

「数字が文字列として保存されています。」を一括で数字に変換
データが増減しても参照先を変更しない名前の管理(Excel)
連動するドロップダウンリストを名前の管理・入力規制・OFFSET・INDIRECTを使って「リストが表示されない」を解決(Excel)
Excel 複数セル内の改行(Alt+Enter)を一括で解除する方法
Excel関数を使って 縦の表に連動した(リンクした)横の表を一括で作成せよ
ワイルドカードとは。使い方いろいろ。(Excel)

■スポンサーリンク

■ランキングに参加しています。
↓このブログを気に入っていただけましたら、ポチッとお願いします。
人気ブログランキングへ