在macros中使用= AND(ISERROR)公式时出现错误1004

我正在录制一个macros来自动化一些Excel报告,并且每当我尝试运行一个iserror(search)公式时遇到了以下错误:

运行时错误“1004”:应用程序定义或对象定义的错误

我有两个名单。 公式遍历第一个列表,并将值与第二个列表的值进行比较,隐藏任何匹配的值。

Excel中的公式就像这样只有更宽的标准范围:

=AND(ISERROR(SEARCH($B$3212,B2)),ISERROR(SEARCH($B$3213,B2))) 

当我将公式直接插入到电子表格单元格中时,它的工作原理非常完美,但是当我录制并使用相同的公式运行macros时,出现错误。

编辑2

我得到的公式插入工作通过macros,但现在我不能像以前一样过滤数据,即使我手动没有macros。

下面是一个图片的链接给我想要实现的查找types的一个例子,以前它完美的工作,并从'删除列表中删除所有包含一个string的行现在我不能让它过滤在所有。 我已经尝试删除macros保存在记事本中,以防文件已损坏,但仍然不像以前一样过滤。 什么可能导致这个?

这是查找工作的方式

在本例中,单元格[A13]将包含上述的ISERROR公式。

这个公式不能很好地转换成目前的VBA格式。 您应该使用VBA Instr函数而不是工作表函数Search。

 Function FindSubstring() As Boolean Dim rngFindText As Range Dim rngWithinText As Range Set rngFindText = Sheet1.Range("B3212") Set rngWithinText = Sheet1.Range("B2") FindSubstring = InStr(rngWithinText, rngFindText) End Function Sub foobar() Debug.Print FindSubstring End Sub 

你正在问一个Excel的问题,告诉你在B2find$ B $ 3212的内容,并再次find。

通常情况下,search是用来find另一个东西的内容,通过再次使用它的AND语句,你再次要求…什么?

所以这个问题没有意义。

我想你可能会问只是一次,如果有一个错误,这意味着它没有find它在这种情况下,它返回0. = IF(ISERROR(SEARCH($ B $ 3212,B2)),0,SEARCH ($ B $ 3212 B2))

我想到了这一点,原来的1004错误是由vba只是部分logging公式引起的,涉及的解决scheme只是进入debugging器,以find哪些行没有被正确翻译,并编辑该行。 然后,我必须编辑公式,以便能够根据我的标准筛选出值,并以一个更接近于此的公式结束:

  =AND(ISERROR(SEARCH("Value1",B2)), ISERROR(SEARCH("Value2",B2)))