我有两个工作簿,两个布局都是一样的。 VBA代码的工作簿是我的原始工作簿,第二个工作簿有一些覆盖信息。我想要做的是第二个工作簿上的每一行都是在原始文件中找到它并在其上复制此行信息,如果找不到它,则将该行添加为新行。我将列G作为此列进行比较,数据永远不会更改,这是唯一的ID。
我在.Find on line上收到编译错误(找不到方法或数据成员): -
Set rngFound = .Find(What:=cell.Value, LookIn:=wbol.Worksheets("DLT Formatted").Range("G:G"), _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
这是我到目前为止的VBA代码: -
Set wbol = Workbooks.Open("C:Documents\Overlay.xls")
Set sht2 = Workbooks("Overlay").Worksheets("Overlay Template")
With sht2
For Each Row In Range("G:G")
Set rngFound = .Find(What:=cell.Value, LookIn:=wbol.Worksheets("Overlay Template").Range("G:G"), _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not rngFound Is Nothing Then
rngFound.Select
Selection.Copy
Workbooks("Original Template").Worksheets("original").Range(rngFound).PasteSpecial
End If
Next
End With
我修改了我的代码,现在我得到了同一行上的Object required错误。我是VBA的新手,所以不确定我理解为什么会这样: -
With sht2
For Each Row In Range("G:G")
Set rngFound = wbol.Worksheets("Overlay Template").Range("G:G").Find(What:=cell.Value, LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not rngFound Is Nothing Then
rngFound.Copy
Workbooks("Original Template").Worksheets("original").Range(rngFound).PasteSpecial
End If
Next
End With
答案 0 :(得分:0)
" LookIn"参数只能是以下XlFindLookIn常量之一:xlFormulas,xlValues或xlNotes。
对于要搜索的范围,您可以
Set rngFound = wbol.Worksheets("Overlay Template").Range("G:G").Find(What:=.cell.Value, LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)
前面的。 in" .cell.Value"很重要有关Find方法的更多信息,请参阅Microsoft website
您也可以在代码中执行直接的rngFound.copy,无需先选择它。
结束代码应该看起来像
With sht2
For Each r In .Range("G:G")
Set rngFound = wbol.Worksheets("Overlay Template").Range("G:G").Find(What:=r.Value, LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not rngFound Is Nothing Then
rngFound.Copy
Workbooks("Original Template").Worksheets("original").Range(rngFound).PasteSpecial
End If
Next
End With