『Excel』 VBAでちょっと便利!?(その12)

2019年02月25日 仕事のこだわり

Excelでのプログラミング12回目です。

セルの「プロパティ」についての2回目です。

■セル(Rangeオブジェクト)のプロパティ一覧(よく使われるものを抜粋)

◇ Column  Row ◇

  • セルの列番号、セルの行番号を取得します。

表の開始セルが分かっている時、表の最終行、最終列を取得してみます。

上の例では、表の開始セルは(2行目、2列目)になります。

最終行は
Cells(2,2).End(xlDown).Row      —①

最終列は
Cells(2,2).End(xlToRight).Column    —②

で取得できます。

①は、セル(2行2列目)から下方向へ最終行のセルを探し、その行番号を取得する。
②は、セル(2行2列目)から右方向へ最終列のセルを探し、その列番号を取得する。
ということになります。

この時一つ注意しなければならないことがあります。

表の途中に空白のセルがある場合は、そのひとつ前のセルの行や列を取得してしまうということです。

それを避ける方法があります。

Cells(Rows.Count, 2).End(xlUp).Row       —①‘

Cells(2, Columns.Count).End(xlToLeft).Column  —②‘

①‘は、Rows.Count(ワークシートの最下行の行番号)・2列目のセルから上方向にデータの入ったセルを探し、その行番号を取得します。

②‘は、2行目・Columns.Count(ワークシートの最終列の列番号)のセルから左方向へデータの入ったセルを探し、その列番号を取得します。

~~~~~~~~~~~~~~~~~~~~

※Rows.Count、Columns.Countは
エクセルのバージョンによって変わります。

◆2007以降 1048576行 16,384列

◆2003以前 65536行 256列

~~~~~~~~~~~~~~~~~~~~

 

【注意】行番号を変数に代入する場合は、変数の型をLong型にしてください。

<例>

Dim gyoubangou as Long

gyoubangou = Cells(2,2).End(xlDown).Row

※32,767行を超える場合があるため、Long型にすることでエラーを防ぐことができます。

 

次回は、セルのプロパティ3回目です。

 

 

Copyright © syshan.jp all rights reserved.