Vba: 列内の値を検索する方法 (例付き)
VBA で次の基本構文を使用して、Excel の列の値を検索できます。
Sub FindValue()
Dim rng As Range
Dim cell As Range
Dim findString As String
'specify range to look in
Set rng = ActiveSheet.Columns(" A:A ")
'specify string to look for
findString = " Rockets "
'find cell with string
Set cell = rng.Find(What:=findString, LookIn:=xlFormulas, _
LookAt:=xlWhole, MatchCase:=False)
If cell Is Nothing Then
cell.Font.Color = vbBlack
Else
cell.Font.Color = vbRed
cell.Font.Bold = True
End If
End Sub
この特定のマクロは、現在アクティブなシートの列 A 全体で文字列「Rockets」を検索し、見つかった場合はセルのフォントの色を赤に変更し、フォントを太字にします。
次の例は、この構文を実際に使用する方法を示しています。
例: VBA を使用して列の値を検索する方法
さまざまなバスケットボール選手に関する情報を含む次のデータセットがあるとします。
列 A でチーム名「Rockets」を検索するとします。見つかったら、セルのフォントの色を赤に変換し、フォントを太字にします。
これを行うには、次のマクロを作成できます。
Sub FindValues()
Dim rng As Range
Dim cell As Range
Dim findString As String
'specify range to look in
Set rng = ActiveSheet.Columns(" A:A ")
'specify string to look for
findString = " Rockets "
'find cell with string
Set cell = rng.Find(What:=findString, LookIn:=xlFormulas, _
LookAt:=xlWhole, MatchCase:=False)
If cell Is Nothing Then
cell.Font.Color = vbBlack
Else
cell.Font.Color = vbRed
cell.Font.Bold = True
End If
End Sub
このマクロを実行すると、次の出力が表示されます。
文字列「Rockets」を含むセルのフォントが赤で太字になっていることに注目してください。
他のすべてのセルは単に黒いフォントを維持しました。
コード内のMatchCase:=False引数は、大文字と小文字を区別しない検索を実行するように VBA に指示することに注意してください。
したがって、列 A のチーム名が「rockets」の場合、マクロは常にその文字列を検索し、フォントを赤く太字にします。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA: AVERAGEIF 関数と AVERAGEIFS 関数の書き方
VBA: SUMIF 関数と SUMIFS 関数の書き方
VBA: COUNTIF 関数と COUNTIFS 関数の書き方