2017-07-04 6 views
1

次のコードを使用して、別のワークブックのF列の値を見つけようとしています。vbaは別のブックからの列の値を検索しますか?

Sub WorkBookCheck() 
'On Error Resume Next 
'Extract Aduit Percents 
Dim sFound As String 
Dim FindRow As Range 
Dim WB2 As Workbook 
Dim app As New Excel.Application 
sFound = Dir(Worksheets("assets").Range("A12").Value & "\" & "*_UK_results.xl*") 'the first one found 
If sFound <> "" Then 
app.Visible = False 'Visible is False by default, so this isn't necessary 
Set WB2 = Workbooks.Open(Filename:=Worksheets("assets").Range("A12").Value & "\" & sFound, ReadOnly:=True) 
End If 

With WB2 
With Worksheets("Result sheets Lidl") 
Set FindRow = .Range("F:F").Find(What:="Chapter result", LookIn:=xlValues) 
MsgBox FindRow 

If Not FindRow Is Nothing Then 
MsgBox FindRow 
End If 

End With 
End With 

End Sub 

私は、次のエラーを取得しています:この行で

Object Variable or With Block Variable not set 

:誰かが私が間違っているつもりですどこ私を見ることができます

MsgBox FindRow 

してください?

また、この値は複数の列に表示されるので、見つかった一致する値ごとにメッセージを表示できるようにしたいと考えています。誰かがこれをどのようにループすることができるかを私に見せてもらえますか?私はvbaにまったく新しいものです。ありがとう

+0

は 'チャプター結果 'ですか? –

答えて

0

1つのネストされた2つのWithブロックは意味をなさない。

2もちろん、結果がNothingの場合、メッセージボックスを作成することはできません。 .Findでは、コールにそれらを設定いけない場合、彼らは最後の検索から、どうかGUIまたはVBAでそれらの値を継承することを他の多くのパラメータを持っていることを

With WB2.Worksheets("Result sheets Lidl") 
    Set FindRow = .Range("F:F").Find(What:="Chapter result", LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False) 
    If Not FindRow Is Nothing Then MsgBox FindRow.Address 
End With 

注意。通常は、すべてを設定するか、Matchの代替方法を使用することをお勧めします。

+0

ありがとう私はコードを試して、私の列に値がありますが、msgboxは表示されません – user7415328

+0

@ user7415328検索されたテキストはセルの「一部」かもしれません。 'LookAt = xlPart'を使う必要があります。編集してみてください。 –

+0

私の悪い私は列FとGを併合してFに変えなければならなかった:G – user7415328

関連する問題