Excel VBA .find问题

PootyToot

我是该论坛的新成员,但已经做了一些有关此特定问题的搜索。我还没找到任何东西。

我需要一个VBA脚本来搜索位于I7第一个工作簿中单元格中的wb1,并将该条目引用到A:A另一个工作簿中名为“代码”的工作表中的列wb2,如果它I7在“列中的单元格”找到了该值,A:A它将将文本“找到的值”放入Cell 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
为什么

正如罗恩(Ron)所评论的那样,您的声明和实例化需要进行一些修改。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

结果简化为单个工作簿中的一张纸:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章