使用两个字符串变量键入Mismatch Error InStr

时间:2014-12-02 09:39:31

标签: vba

我试图检查字符串中的当前值是否已存在于给定字符串中。我使用两个变量作为父字符串(单元格中的现有字符串,活动单元格)和搜索字符串。如果当前字符串确实存在于父字符串中,则会弹出一个消息框,询问用户是否要粘贴相同的内容。

我在第一个IF条件下遇到类型不匹配错误。你能帮我理解一下这是什么问题吗?

If (InStr(ActiveCell.Value, NRemark, vbBinaryCompare)) = 0 Then
Exit Sub
Else
Lresponse = MsgBox("You have already synced the same content . Would you like to  continue ?", vbYesNo)
    If Lresponse = vbYes Then
    GoTo V1 ' goes to the loop to append NRemark to the parent string
    Else
    Exit Sub
    End If
End If

2 个答案:

答案 0 :(得分:1)

看看InStr中的参数:

  

函数InStr([Start],[String1],[String2],[Compare As VbCompareMethod = vbBinaryCompare])

第一个参数是[Start],在你的情况下应该是一个1的常量。

  

If(InStr(1,ActiveCell.Value,NRemark,vbBinaryCompare))= 0然后......

这应该至少是暂时的,直到你遇到空单元格,有错误的单元格等,在这种情况下它会再次破坏。

另外,我无法判断你的NRemark变量的类型。它必须是一个字符串,所以如果它是一个单元格,你应该改为使用NRemark.Value。

答案 1 :(得分:1)

这里的答案还很晚,但是今天却遇到了同样的问题-因为ActiveCell.Value是Variant(类型不确定),系统会在您尝试使用可选的[start]变量时看到该信息,因此类型实际上不匹配是因为它认为您的compare变量应该是字符串。

我当时正在使用cel.FormulaR1C1来尝试操作一个变量,该变量也是Variant类型,因此也导致了同样的问题。