2017-06-02 2 views
0

別のブックのE列を見て値を見つけようとしています。ExcelのVBAルックダウン列と値を見つける?

値はセル内のテキストの間に表示されません。

セルの例:

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 

何が起こるように思わない、とExcelのクラッシュ:

これは、これはいくつかのテキスト

ここに私のコードですであるいくつかのテキストMy Valueです。

私が間違っている場所を誰かに見せてもらえますか?

+0

'あなたに「」' Empty'の使用を '使用しないでとあなたが参照している状態であることを指定することである

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 

行う。 InStrの基準が逆になっていると思います。 –

+3

Find()やApplication.WorksheetFunction.Matchを調べることができます。どちらもループよりも速いでしょう。 –

+0

@ScottCraner私はaffraid私はこれを行う方法を知らないです。私はVBAの新しいブランドです。あなたは私を見せてくれますか? – user7415328

答えて

0

あなたの問題の1つは、rng変数が列全体を参照していることです。次に、値を取得するようにコードに要求しています。

Withステートメントの後で、このコードを試してください。 String1:=String2:=の目的は、これらはInStrための第一条件はStart:=

関連する問題