【发布时间】:2017-05-12 16:30:22
【问题描述】:
我正在开发一个更大的 Excel 宏,但我稍微简化了我的代码并发现了我的问题所在。在下面的 if 语句中,我可以将 rng 更改为使语句为真的单元格,并且它工作正常。但是,如果我将其更改为将返回 false 的单元格(或范围内的单元格),它将返回 #value 错误。我对 VBA 很陌生,所以我做错了什么?
Function count_same(column As Range, row As Range)
Dim rng As Range
Dim cell As Range
Dim result As Long
result = 0
Set rng = Worksheets("Install together 2").Range("f10")
For Each cell In rng.Cells
If WorksheetFunction.IsNumber(WorksheetFunction.Search(row.Value, cell.Value)) Then
result = result + 1
End If
Next cell
count_same = result
End Function
【问题讨论】:
-
你能提供一个工作和不工作的例子吗,一个单元格是一个范围对象。
-
上面的工作正常,因为单元格 f10 包含我正在搜索的匹配项。但是,如果我将该范围更改为 f11,甚至是“f10:f11”,它会抛出 #value,因为 f11 不包含我正在搜索的内容。如果它不包含文本,我希望它跳过 f11。
-
试试这个。
if instr(1,cell,row) > 0 then -
他为什么需要跳过错误?对于新程序员来说,这将是非常糟糕的建议。除非绝对必要,否则应避免使用
On Error Resume Next。 -
来自 MSDN,关于 SEARCH 方法:“如果找不到 find_text,则返回 #VALUE! 错误值。”您可能必须将其包装在 IfError 方法中才能获得所需的内容,或者以不同的方式重写。你能改写你想用这个实现的目标吗?