Próbuję uzyskać kod, aby sprawdzić, czy cała kolumna zawiera określony tekst.
Zawsze będą to stolice. Po tym wierszu jest dużo kodu, ale chcę, aby kod był uruchamiany tylko wtedy, gdy spełniony jest następujący warunek. Kod, o którym myślę, wygląda następująco.

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

Jednak to nic nie zwraca, próbowałem Instr(), ale bezskutecznie.

Jaka jest właściwa składnia?

2
Iain Wood 30 sierpień 2012, 16:28

2 odpowiedzi

Najlepsza odpowiedź

Możesz wyszukiwać w zakresie;

if not ActiveSheet.Range("J:J").Find("GENERAL", MatchCase:=True) is nothing then
    msgbox "found it!"
end if
3
Alex K. 30 sierpień 2012, 16:37

FInd ma zastosowanie

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

Powinieneś określić, czy dopasowanie „OGÓLNE” powinno być całym ciągiem (użyj LookAt:=xlWhole), czy częściowym dopasowaniem (np. aby dopasować OGÓLNE w „OGÓLNYM KOMUNIKACJI” użyj LookAt:=xlPart)

Również ogólnie najlepiej jest użyć obiektu Range (rng1 poniżej), aby móc pracować ze znalezionym obiektem. Chociaż w twoim przypadku wystarczy test logiczny, aby uruchomić lub nie uruchomić dalszy kod

Dopasowanie częściowe

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

Cały mecz

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
1
brettdj 30 sierpień 2012, 16:58