搜索#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,未找到时为其他子的主要内容,如果未能解决你的问题,请参考以下文章