首页 > 解决方案 > VBA 在特定工作表中搜索错误并将结果传回主宏

问题描述

我需要一个宏来搜索工作簿中特定工作表中的公式错误。这需要在每本书中具有不同工作表名称的多个不同工作簿中工作。完成检查后,我希望它定义一个名为 SheetErrors 的变量,如果有错误,则定义为“1”,如果没有错误,则定义为“0”。如果它是“1”,则需要将其传递回主宏,因为我希望它退出子宏并显示一个消息框,说明电子表格包含错误。

我编写了下面的代码来查找错误:

Sub Error_Finder()

Dim celltxt As String
Dim SheetErrors As String

celltxt = ActiveSheet.Range("A:FA").Text



If InStr(1, celltxt, "#NULL!") Or _
   InStr(1, celltxt, "#NUM!") Or _
   InStr(1, celltxt, "#REF!") Or _
   InStr(1, celltxt, "#VALUE!") Then
   SheetErrors = "1"
   Else
   SheetErrors = "0"


End Sub

我在 Google 上找不到任何对我有用的东西,可以将 SheetErrors 变量传递回主宏。任何你能解释的事情都将不胜感激,另外,我对 VBA 还是很陌生,所以如果有更好的方法来做我上面所做的事情,请告诉我。

谢谢,

标签: excelvbaerror-handlingerror-checking

解决方案


如果你想传回一些东西,你可以考虑把它变成一个函数。看起来像这样:

编辑:感谢 K.Davis 和 Tim Williams 的建议

Function SheetErrors() As String

    Dim Rng As Range

    Set Rng = ActiveSheet.Range("A:FA")
    On Error Resume Next
    If (Rng.SpecialCells(xlCellTypeFormulas, xlErrors).count = 0) Then
        SheetErrors = "0"
    Else
        SheetErrors = "1"
    End If

    On Error GoTo 0

End Function

推荐阅读