【发布时间】:2013-09-28 16:26:16
【问题描述】:
问题:
为什么引用不同的工作簿时Range.Find 方法不起作用?
问题:
我正在尝试在工作簿之间复制数据,但 Range.Find 方法因“运行时错误 1004”而停止。我在 Windows 7 机器上使用 Excel 2007。
详情: 在两个工作簿上,每个工作簿仅引用或使用 Sheet1。我有一个程序(ztest),大纲如下:
- 格式化工作表
- 遍历工作簿 #1 的 E 列中的所有单元格
- 使用
Range.Find方法,在工作簿#2 的E 列中查找值 - 找到后,设置工作簿 #1 偏移列 = 工作簿 #2 偏移列
我想用 .Find 来做这件事 - 不 使用 HLOOKUP 或类似的东西。
我已经稍微简化了代码,以缩小确切的范围。这里没有显示上面的第 4 步,但是错误出现在第 3 步,在包含.Find 方法的语句中:
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
【问题讨论】:
-
Birds View:您在 Cells 之前缺少一个 DOT...您需要在每个位置完全限定您的 Cells 对象。
-
顺便说一句 +1 提出了一个很好的问题...