Как установить сообщение об ошибке на VBA, если элемент не найден? - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь отобразить сообщение об ошибке неверного номера, если элемент не найден с одного листа на другой.

Sub info()

Dim dehyp As Long
Dim rng As Range
Dim wrong As String
wrong = "False"

dehyp = Replace(Range("A5").Value, "-", "")
Sheets("Gov").Select

Set rng = Sheets("Gov").Columns(1).Find(What:=dehyp, LookIn:=xlFormulas, 
LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
On Error Resume Next
Set wrong = "True"

If wrong = "True" Then
Sheets("Total usage").Select
MsgBox ("Invalid Number")

Else
rng.Offset(0, 1).Select
Selection.Copy
Sheets("Total usage").Select
Range("B5").Select
ActiveSheet.Paste
'this part works without the else and the error stuff



End If



End Sub

Я определил размеры переменных и установил неверную начальную переменную как ложную. Я получаю ошибку компиляции, которая говорит, что требуется объект. Поэтому мой вопрос: почему это происходит и что я могу сделать, чтобы исправить ошибку?

1 Ответ

3 голосов
/ 21 октября 2019

Стоя все комментарии, я думаю, вы можете быть после этого кода:

Option Explicit

Sub info()

    Dim dehyp As Long
    Dim rng As Range

    dehyp = Replace(Range("A5").Value, "-", "")
    Set rng = Sheets("Gov").Columns(1).Find(What:=dehyp, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

    If rng Is Nothing Then
        MsgBox ("Invalid Number")
    Else
        rng.Offset(0, 1).Copy Destination:=Sheets("Total usage").Range("B5")
    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...