Question:
Why is the Range.Find
method not working when referencing a different workbook?
Problem:
I'm attempting to copy data between workbooks, but the Range.Find
method is stopping with a "Run-time Error 1004". I'm using Excel 2007 on a Windows 7 machine.
Details: On two workbooks, only Sheet1 is referenced or used for each workbook. I have a procedure (ztest) with the following outline:
- Format the sheet
- Loop through all cells in column E of workbook #1
- Using the
Range.Find
method, find the value in column E of the workbook #2 - Once found, set workbook #1 offset column = workbook #2 offset column
I'd like to do this with .Find
- not using HLOOKUP or the like.
I've simplified the code somewhat, to narrow down what exactly is going on. This doesn't show step 4 above, but the error occurs in step 3, in the statement containing the .Find
method:
Public Sub ztest2()
'set workbook titles
Const w1 As String = "05AR 20130920.xlsx"
Const w2 As String = "05AR 20130923.xlsx"
Dim cl As Variant
With Workbooks(w2).Worksheets(1)
'format the sheet
.Range("A1", "D1").EntireColumn.Hidden = True
'loop through all cells column E of workbook #1
For Each cl In .Range("E2", Cells(Rows.Count, "E").End(xlUp))
'find value of current cell in column E, workbook #2
Workbooks(w1).Worksheets(1) _
.Range("E2", Cells(Rows.Count, "E").End(xlUp)) _
.Find(what:=cl.Value, LookIn:=xlValues).Select
Next
End With
End Sub