おしゃれにいけてる?

散歩やお買い物のことなどを書いています・・・

Entries

 EXCEL VBA TIPs. [ 忘れがちな Range オブジェクトの話。]

 EXCEL の仕事も、一段落したので、忘れてもすぐ思い出せるように、ブログにメモ。(自分用なので、他の人にはわかりにくいかも。)

エクセルの VBA って、ほんと、ちょっと間を開けると、すぐに忘れてしまう。これ、不思議。で、一番忘れてしまうのが、

   「 Range オブジェクトの扱い。」

 エクセルの値のある最終セルを見つけて、データの入力されている範囲の Range オブジェクトを取得する方法。(最大セル?最終行?最後のセル?)

Dim WS As Worksheet
Dim LastCell As Range

Set WS = Thisworkbook.Worksheets("Sheet1")
Set LastCell = WS.Cells.SpecialCells(xlCellTypeLastCell)

SpecialCells() は引数に常数を入れると、いろいろな条件でセルをグループ選択できる。 xlCellTypeLastCell を入れると、使われたセル範囲内の最後のセルの Range オブジェクトを返してくれる。

ただし、

102030
112131
122232

この表の[12]と[30]のセルにだけ値が入っていても、LastCell には、[32]のセルの Range オブジェクトが代入されるので注意が必要。

で、LastCell の行列番号を知りたいなら、

   列番号 = LastCell.Column
   行番号 = LastCell.Row

で取得できる。

 データが入力されている範囲の Range オブジェクト DataArea を取得したいのなら、例えば、左上のセルに「TopLeftCell」とかの範囲名を付けて、

   Dim TopCell As Range
   Dim DataArea As Range

   Set TopCell = WS.Range("TopLeftCell")
   Set DataArea = WS.Range(TopCell, LastCell)

の様に、データのある範囲のレンジを取得してもいい。

この DataArea の n行目と m列目までが見出しの場合、データの入っている範囲の Range オブジェクトを取得したいなら、

  With DataArea
   Set DataArea = .Range(Cells(n,m), LastCell)
  End With

って感じ。

DataArea の n 行目の Range オブジェクトを取得したいなら、

  DataArea.Rows(n)

n 列目のオブジェクトを取得したいなら、

  DataArea.Columns(n)

メモメモ。

スポンサードリンク

Comment

Comment_form

管理者のみ表示。

左サイドメニュー

プロフィール

Author:ジョニー

ゆるゆると日々を過ごしてしまう、ダメダメ野郎の航海日記。



クリック (・。・)yoro

このブログ内を検索

最近の記事

カテゴリー

最近のコメント

QRコード

QRコード

月別アーカイブ

右サイドメニュー

カレンダー

02 | 2020/03 | 04
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

スポンサードリンク

FC2カウンター

#1400