我试图检查字符串中的当前值是否已存在于给定字符串中。我使用两个变量作为父字符串(单元格中的现有字符串,活动单元格)和搜索字符串。如果当前字符串确实存在于父字符串中,则会弹出一个消息框,询问用户是否要粘贴相同的内容。
我在第一个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
答案 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类型,因此也导致了同样的问题。