2017-06-02 7 views
0

Ich versuche einen Wert zu finden, indem ich in einer anderen Arbeitsmappe nach Spalte E suche.VBA nach unten Spalte in Excel und finden Wert?

Der Wert ist unter dem Text in einer Zelle verborgen.

Zelle Beispiel:

Dies ist ein Text My Value Dieses einiger Text ist

Hier ist mein Code:

Option Explicit 
Sub Find() 
Dim FoundRange As Range 
Dim rng As Range 
Dim wb As Workbook 

On Error Resume Next 
Set wb = Workbooks("Supplier Contacts.xlsx") 
If wb Is Nothing Then 'open workbook if not open 
    Set wb = Workbooks.Open("G:\QUALITY ASSURANCE\06_SUPPLIER INFORMATION\Supplier Contacts.xlsx") 
End If 

With wb.Worksheets("Listed Supplier") 

Set rng = .Columns("E:E") 
Do While rng.Value <> Empty 
If InStr(rng.Value, ThisWorkbook.Worksheets("Data").Range("B3").Value) = 0 Then 
Set rng = rng.Offset(1) 
rng.Select 

Else 

MsgBox "I contain a % symbol!" 
End If 
Loop 

End With 
End Sub 

Nichts scheint zu passieren, und Excel stürzt ab.

Kann mir bitte jemand zeigen, wo ich falsch liege?

+0

nicht verwenden 'Empty' Verwendung' „“ 'in Ihrem machen. und ich glaube, du hast deine InStr-Kriterien zurück. –

+3

Sie möchten vielleicht in Find() und/oder Application.WorksheetFunction.Match suchen. Sie werden beide schneller sein als Schleifen. –

+0

@ScottCraner Ich habe Angst, ich weiß nicht, wie das geht. Ich bin neu bei VBA. Kannst du es mir bitte zeigen? – user7415328

Antwort

0

Eines Ihrer Probleme ist, dass Ihre rng Variable bezieht sich auf eine ganze Spalte, und Sie fragen dann den Code, um den Wert zu nehmen.

Nach Ihrer With Anweisung, versuchen Sie diesen Code;

For Each rng in wb.Range("E:E") 
    If IsEmpty(rng.value) = False Then 
     If InStr(String1:=rng.Value, String2:=ThisWorkbook.Worksheets("Data").Range("B3").Value) <> 0 Then 
     MsgBox "I contain a % symbol!" 
     End If 
    End If 
Next rng 

Der Zweck der String1:= und String2:= ist zu präzisieren, dass das sind die Bedingungen, die Sie sich beziehen, als die erste Bedingung für InStr ist Start:=

Verwandte Themen