VBA数式を無視して値の範囲を指定する

こんにちは土風舞衣です。

vbaでの最終行を指定する方法は調べると割とスグでてきましたが、エクセル自体に数式が入っていて…vlookupで作られている表とか、結構あるんですよね。。。

しかも最終行が変動する場合にも範囲指定が出来る方法です。

 

16行目以降には値は入っていませんが関数が入っています。

なので、

Range("B4").End(xlDown).Row

を使うと、B100なんかが取得されてしまうんですよね。。。

 

なので値検索の出来るFindをつかってみました。

Sub 最終()

Dim r
Dim last

Set r = Columns(2).Find("", , xlValues, 1)
r.Select

last = ActiveCell.Offset(-1, 6).Address
MsgBox last
Range("B4:" & last).Select
Selection.Copy

End Sub

 

これで今回の画像だとB4:H15が範囲指定できます。

行が増えても大丈夫!(…とりあえず)