如何使用If语句在列中搜索特定文本?

时间:2012-08-30 12:28:10

标签: excel vba

我正在尝试将代码检查整个列是否包含特定文本 它永远是首都。在此行之后有很多代码,但我只希望在满足以下条件的情况下运行代码。我正在思考的代码如下:

If ActiveSheet.Range("J:J").Text = "GENERAL" Then

然而,这没有任何回报,我尝试了Instr(),但无济于事。

什么是正确的语法?

2 个答案:

答案 0 :(得分:3)

您可以在一个范围内搜索;

if not ActiveSheet.Range("J:J").Find("GENERAL", MatchCase:=True) is nothing then
    msgbox "found it!"
end if

答案 1 :(得分:1)

FInd有使用权

Find(What, [After], [LookIn], [LookAt], [SearchOrder], [SearchDirection As XlSearchDirection = xlNext], [MatchCase], [MatchByte], [SearchFormat])

您应该指定匹配“GENERAL”是否应该是整个字符串(使用LookAt:=xlWhole),还是部分匹配(即匹配“GENERAL COMMOTION”中的GENERAL使用LookAt:=xlPart

此外,通常最好使用Range对象(下面为rng1),以便您可以使用找到的对象。虽然在您的情况下布尔测试足以运行或不运行您的更多代码

部分匹配

Sub FindPartialString()
Dim rng1 As Range
'find partial match
Set rng1 = ActiveSheet.Range("J:J").Find("GENERAL", , xlValues, xlPart, , , True)
If Not rng1 Is Nothing Then
MsgBox "found in " & rng1.Address(0, 0)
Else
MsgBox "no found", vbCritical
End If
End Sub

整场比赛

Sub FindWholeString()
Dim rng1 As Range
'find exact match
Set rng1 = ActiveSheet.Range("J:J").Find("GENERAL", , xlValues, xlWhole, , , True)
If Not rng1 Is Nothing Then
MsgBox "found in " & rng1.Address(0, 0)
Else
MsgBox "no found", vbCritical
End If
End Sub