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

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

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

0
Meliodus123 21 Окт 2019 в 23:37

1 ответ

Лучший ответ

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

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
3
DisplayName 21 Окт 2019 в 20:46