VBA для поиска ошибок в определенном листе и передачи результата в основной макрос - PullRequest
0 голосов
/ 30 октября 2018

Мне нужен макрос, который будет искать ошибки формулы в определенной рабочей таблице в рабочей книге. Это должно работать в нескольких разных книгах с разными именами листов в каждой книге. После завершения проверки я хочу определить переменную с именем 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, поэтому, если есть лучший способ сделать то, что я сделал выше, пожалуйста, дайте мне знать.

Спасибо,

P

1 Ответ

0 голосов
/ 30 октября 2018

Если вы хотите передать что-то обратно, вы можете вместо этого сделать это функцией. Это будет выглядеть примерно так:

Редактировать: Спасибо К.Дэвису и Тиму Уильямсу за предложения

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
...