2

列全体に特定のテキストが含まれているかどうかを確認するコードを取得しようとしています。
常に大文字になります。この行の後に多くのコードがありますが、次の条件が満たされた場合にのみコードを実行したいと考えています。私が考えているコードは次のとおりです。

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

ただし、これは何も返しません。試してみInstr()ましたが、役に立ちませんでした。

正しい構文は何ですか?

4

2 に答える 2

3

範囲内で検索できます。

if not ActiveSheet.Range("J:J").Find("GENERAL", MatchCase:=True) is nothing then
    msgbox "found it!"
end if
于 2012-08-30T12:37:12.783 に答える
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
于 2012-08-30T12:58:02.067 に答える