搜索#N/A!在工作表中,如果找到则为 msgbox,未找到时为其他子

Posted

技术标签:

【中文标题】搜索#N/A!在工作表中,如果找到则为 msgbox,未找到时为其他子【英文标题】:Search for #N/A! in a sheet, msgbox if found, other sub when not found 【发布时间】:2022-01-15 02:03:57 【问题描述】:

在工作表中搜索#N/A!或#REF!错误。 当至少发现一个错误时,它必须弹出一个 msgbox。如果没有错误,应该执行其他sub-sprzedaz2。

只要至少有一个错误,它就可以正常工作。但是对于没有错误的工作表,它会损坏,我想不出解决方案。

到目前为止我所拥有的:

Sub X_SPR_sprawdzbledy()
Application.Goto Workbooks("generator_komunikatow.xlsm").Sheets("komunikat_OS_sprzedaz").Range("a1")
On Error Resume Next
On Error GoTo 0
If Sheet1.UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors).Cells.Count = 0 Then
Call sprzedaz2
Else:
MsgBox ("UWAGA! Znaleziono " & Sheet1.UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors).Cells.Count & " bledow!" & vbNewLine & vbNewLine & "SPRAWDZ KOMORKI Z #N/A! lub #REF!")

End If
End Sub

【问题讨论】:

【参考方案1】:

主要问题:如果SpecialCells 没有找到任何内容(在您的情况下,没有错误的单元格),它将引发运行时错误,您需要捕获此错误(范围永远不能有 0 个单元格)。以下代码将SpecialCells 的结果分配给一个变量。如果因为没有找到任何东西而失败,则该变量保持未分配状态,这意味着它仍然拥有Nothing

Dim errorCells As Range
On Error Resume Next
Set errorCells = Sheet1.UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors).Cells
On Error GoTo 0
If errorCells Is Nothing Then    ' No errors in cells
    Call sprzedaz2
Else
    MsgBox "UWAGA! Znaleziono " & errorCells.Count & " bledow!" & vbNewLine & vbNewLine & "SPRAWDZ KOMORKI Z #N/A! lub #REF!"
End If

注意在Else之后去掉:...

【讨论】:

以上是关于搜索#N/A!在工作表中,如果找到则为 msgbox,未找到时为其他子的主要内容,如果未能解决你的问题,请参考以下文章

有日期表,如果是工作日,需要找到日期后的第 11 个工作日

在另一个表中搜索整个单词的表,如果找到则从结果中排除

如何将EXCEL表按另一个EXCEL表中的内容进行搜索,然后将结果复制到新的工作表中?

Sqlite:如果结果为空,则为最大子查询设置默认值

Trie树解析

在字符串中搜索文本,将行复制并粘贴到新工作表