【VBA】Findで見つけた位置から末尾までを編集する方法!

表題の通りの記事です。

目次

Findで見つけた位置から範囲を割り出す

Sub test()
    Dim Rng As Range
    Dim a
    Set Rng = Cells.Find(What:="test")
    If Not Rng Is Nothing Then
    a = Rng.CurrentRegion
    Range(Rng, Cells(UBound(a), Rng.Column)).Font.Bold = True
    End If
End Sub

testという文字を見つけて、その位置から末尾までを太字に変えています。
これだけです笑

Resizeもできる

Rng.Resize(UBound(a)).Font.Bold = True

RangeオブジェクトなのでResizeがつかえます。
こっちの方がスッキリしていいですね。

Offsetも便利

Rng.Offset(1).Font.Bold = True
Rng.Offset(1).Address

項目の1つ下とか隣が見たい時ってありますよね。
これがあったらVLOOKとかいらないかもですね。

なぜ必要か

やりたかったのは、クラスモジュールで範囲の管理です。

クエリだったりデータベースってたいてい1行とか2行目に項目名があって、その下に数値が並んでいますよね。

なので、その項目名だけわかっていれば管理できるような体制にしたかったのです。
Findで位置を割り出して、範囲を指定する。
後はシート関数で計算するみたいな感じです。

WorksheetFunction.Count(セル範囲)

↑みたいな。

Findは便利

あんまり使ったことなかったのですが、Findって便利ですよね。(DoLoopで強引に出したりしてました笑)

FindでみつかったRangeの行番号や列番号も簡単にわかる

Sub test2()
  MsgBox Cells.Find("test").Row
End Sub

Sub test3()
  MsgBox Cells.Find("test").Column
End Sub

こんな風に行番号や列番号も簡単に出せます。

Range(”A:A”).Find(“test”).Row

A列のどの場所にtestがあるかみたいに、範囲も限定できます。

おわり

なぜ使ってこなかったのか後悔です・・・
これだから独学は非効率的なんていわれるんですよね。

もっと効率の良い方法あれば教えてください!!

[temp id=2]

コメント

コメントする

目次