IF FIND函数在vba中找不到任何内容,

时间:2015-12-01 23:13:23

标签: excel vba excel-vba loops

我目前正在自动化手动流程,执行以下步骤:

1.提示用户打开数据文件并打开文件

2.插入4列

3.使用文件中已有的数据创建一个格式为“DD / MM / YYYY TEXT”的唯一字符串,其中text是变量

4.使用if语句确定主数据文件中是否存在行

5.如果列d =“存在”中的值,则在主数据文件中找到该字符串,并使用vlookup函数将数据从数据文件传输到主数据文件

6.Else(如果值=其他)然后插入一个新的行名称,然后使用vlookup函数将数据从数据文件传输到主文件

我的问题在于Unq.String有时/很少不是完全匹配的事实所以通过使用FIND函数它将返回消息:“我们找不到你要找的东西。点击选项更多搜索方式“

我的问题是,有没有办法在收到此错误消息后,将数据粘贴到另一个名为“mop up”的选项卡上,然后再转到下一行?我正在我的代码中使用LOOP来执行第5步和第6步,因为我需要跳过每一行,但我不知道从哪里开始这个而不会打破循环。

感谢您提前帮助我们并告诉我您是否需要有关上下文的更多信息。

亚伦

由于

编辑评论解释了我打算如何使用它:

Dim ColumnD As String
Dim SearchValue As String

If ColumnD = "Exists" Then

'Find SearchValue in Master data sheet and vlookup
'ELSE Insert new row, add UNQ.String to New row then do the vlookup
'Loop untill using Rows.count + 1 and lastRow (Already declared)

1 个答案:

答案 0 :(得分:3)

此问题已在此处进行了探讨:How to detect whether VBA Excel found something

基本上,您将范围变量设置为生成的.find范围。如果该范围为Nothing,则不会返回任何内容,您可以以最适合您的方式回复用户。

编辑:根据OP增加的查询

Sub findsomething()
    Dim foundsomething As Range
    Dim searchterm As String
    searchterm = "Search Term"

    Set foundsomething = Application.ActiveSheet.Find(What:="search term", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
    If (Not foundsomething Is Nothing) And columnD = "Exists" Then
        ' Do something
    End If
End Sub

干杯,