【发布时间】:2014-04-22 08:33:47
【问题描述】:
我是这个论坛的新成员,但已经针对这个特定问题进行了一些搜索。我还没有找到任何东西。
我需要一个VBA 脚本,它在第一个工作簿wb1 中搜索位于单元格I7 中的值,并将该条目引用到名为“代码”的工作表中的列A:A在另一个工作簿wb2 中,如果它在A:A 列的单元格I7 中找到值,它将把文本“找到值”放入单元格I7。如果在列范围内没有找到该值,它会将旧值从旧工作表复制并粘贴到新工作表中。
Excel 似乎正在执行代码,但我遇到的问题是,如果该值不在被引用的列中,则代码似乎无法拾取它,因此代码只是将无论是否在引用的列中找到值,都将“找到值”放入目标单元格中,我是否在这里遗漏了什么?
Dim wb1 as Workbook, wb2 as Workbook,
Dim Sh1 as Worksheet
Dim WBS as Range
Set Sh1 = wb1.Sheets("Codes").Range("A:A")
Set WBS = Sh1.Columns(1).Find(What:=wb2.Sheets("Summary").Range("I7:I7").Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If WBS Is Nothing Then
wb1.Sheets("Summary").Range("I7:I7").Copy
wb2.Sheets("Summary").Range("I7:I7").PasteSpecial Paste:=xlPasteAll
Else
wb2.Sheets("Summary").Range("I7:I7").Value = "'Value Found"
End If
【问题讨论】:
-
不完全是一个论坛——一种关于类固醇的论坛!
-
我不明白为什么您发布的代码没有 --> 错误。您永远不会将 wb1 设置为任何东西;您正在将工作表对象 (SH1) 设置为一个范围(应该 --> 类型不匹配)。另外,请注意 Range("I7") 就足够了;不需要 Range("I7:I7")。