VBA別館・Python別館
VBA小技-最終セルを調べる(完) - Tak
2018/09/12 (Wed) 09:09:42
知っていると便利な小技を述べます。
① データの最終行を知りたい
どこまでデータが入っているか知りたいときが多々あります。 次のデータはその次の行・列から入れればよいわけですよね。
----------------------------
Option Explicit
Private Sub CommandButton1_Click()
Range("C1").Select
Selection.End(xlDown).Select
MsgBox Selection.Address
End Sub
-----------------------------
データ行の最初のセルを指定してください。
でもこのやり方は、図から分かるように途中に空白があるとそこが最終行とされてしまいます。 絶対に途中に空白が無い時か、その空白行を削除してからお使いください。
次回は空白が有ってもOKな技をお知らせします。
Re: VBA小技 - Tak
2018/09/13 (Thu) 09:14:48
② 空白が無ければ正常表示します
空白行を無くすと、しっかり最終セル番地が表示されました。
所で、MsgBoxのセル番地は $C$11 となっていますが、$の付いた番地も付かない番地も同じ番地を表します。
$が付いた番地をコピーしても、番地は変化しませんが、$が無い時はコピーすると行・列に合わせて変化させてくれます。
便利な時と不便な時がありますが、割合等を計算するときに分母は$C$11と書いておけば、コピーしても分母の値は変わりませんので、そのようなときは$付きセルを使います。
Re: VBA小技 - Tak
2018/09/13 (Thu) 20:20:07
③ 途中空白あってもOK
------------------------------
Option Explicit
Private Sub CommandButton1_Click()
Cells(1048576, 3).Select
Selection.End(xlUp).Select
MsgBox Selection.Address
End
------------------
途中に空白があるとNGなら、下からチェックしてみたらどうだろう? と言うアイディアに基づいております。
・ 一番最後のセルからデータがあるかどうか調べる--> Cells(1048576, 3).Select
W10は1048576行が最後の行です。
・Selection.End(xlUp).Select--->最後のセル(C1048576)から上に順にデータがあるかどうか調べる
・見つけたセルがデータが入っている最終セルと分かります。
割と理解し易いcodeですよね。 この辺はノートにでもコピーしておいても良いですし、忘れたらGoogleで”VBA 最終セルの番地?”とやれば沢山回答が出てきます。
Re: VBA小技 - Tak
2018/09/14 (Fri) 08:41:16
④ データ領域を求める
とびとびにデータが入っていると次の処理に困るので、どこまで使用されているか調べましょう。
----------------------------
Option Explicit
Private Sub CommandButton1_Click()
'ワークシートの最終セル位置を求める
ActiveSheet.UsedRange.Select
MsgBox Selection.Address
End Sub
------------------
・一行目: 使用している領域を選べ-->図のⒶ
・二行目: その領域を表示しろ-->図のⒷ、Ⓒ
とこれ以上ない位簡単なcodeですね。
上手く行かないときもあります、それは次回。