我写了大量的代码,这是可行的,所以我作为傻瓜决定重写它,使之更漂亮。当我在这里问问题的时候,你已经发现到处都有错误。
无论如何,我使用这部分代码找到了一些文本字符串,其中STRING_I_NEED是Dim作为字符串。
If ( Sheet2.Columns(2).Find(STRING_I_NEED, lookAt:=xlWhole).Value = "") Then
'Do something
Else ' Do something else
End If此外,我还使用另一个IF在另一列(3)中找到相同的字符串。
如果列中存在字符串(它们中的任何一个),代码就会工作。如果没有,我会得到错误代码'91‘。我搜索了所有地方,尝试用变量替换sheet.columns.find.value,并在变量名称之前使用"Set“。
这里唯一的问题是:为什么它工作在以前版本的保存文件,而不是在新的“重写”版本的文件。(新的是保存旧文件,用不同的名称保存旧代码,删除旧代码,在里面复制新文件)提到的代码部分是相同的
发布于 2021-11-18 22:54:29
使用Find Method
使用变量的
Find method将返回一个单元格范围引用或Nothing。要控制这一点,使用变量非常重要。Dim fCell As Range
Set fCell = Sheet2.Columns(2).Find(What:=STRING_I_NEED, LookAt:=xlWhole)
If fCell Is Nothing Then ' string not found
' Do something
Else ' string found
' Do something else
End If
' or if you want to switch the order of the statements:
Dim fCell As Range
Set fCell = Sheet2.Columns(2).Find(What:=STRING_I_NEED, LookAt:=xlWhole)
If Not fCell Is Nothing Then ' string found
' Do something
Else ' string not found
' Do something else
End IfA吨Argumets
LookIn和SearchDirection是重要的参数(后者不言自明)。由于使用的是xlWhole,所以在隐藏单元格(行、列:通常是行)时,使用LookIn参数的参数xlFormulas,可以防止Find方法失败。请访问上面的链接,以进一步研究该材料(我已访问过它数十次)。发布于 2021-11-18 22:20:52
尝试从公式中删除".Value =“并重新运行宏。
https://stackoverflow.com/questions/70027400
复制相似问题