我是这个论坛的新成员,但已经做了一些搜索这个特殊问题。我还没找到任何东西。
我需要一个VBA
脚本,用于在第一个工作簿I7
中搜索位于单元格wb1
中的值,并将该条目引用到列A:A
在一个名为" Codes"在另一个工作簿wb2
中,如果它在列I7
中的单元格A:A
中找到值,则会将文本" Value Found"进入单元格I7
。如果它没有在列范围内找到该值,它将原始工作表中的旧值复制并粘贴到新工作表中。
Excel似乎正在执行代码,但我遇到的问题是,如果该值不在引用的列中,则代码似乎无法获取它,因此代码只是将" Value Found"进入目标单元格,无论是否在引用的列中找到值,我在这里遗漏了什么?
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
答案 0 :(得分:0)
罗恩评论你的声明和实例需要一些修改。您的代码中Set
wb1和wb2在哪里?
这个简化版本可以正常使用:
Sub simplified()
Dim rn1 As Range
Dim WBS As Range
Set rn1 = Range("A:A")
Set WBS = rn1.Find( _
What:=Range("I7").Value, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If WBS Is Nothing Then
Range("I7").Copy
Range("J7").PasteSpecial Paste:= Excel.xlValues
Else
Range("J7").Value = "'Value Found"
End If
End Sub
结果简化为单个工作簿中的一个工作表: