表題の通りの記事です。
目次
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]
コメント