Я новичок в VBA, и у меня проблема с приведенным ниже кодом, каждый раз, когда выбирается любая ячейка (кроме одной в столбце G), появляется следующая ошибка;

«Ошибка выполнения 91 - переменная объекта или переменная блока не установлены»

Private Sub Worksheet_Change(ByVal Target As Range)
    Static mailSent As Boolean

    If Not mailSent And Range("G10:G250").Find("YES", MatchCase:=False).Count() > 0 Then
        SendMail
        mailSent = True
    End If
End Sub

Private Sub SendMail()
    With CreateObject("Outlook.Application").createitem(0)
         .To = "helpdesk171@***.com"
            .Subject = "*** Facility Manager Update"
            .Body = "Hi Property Services, " & vbNewLine & vbNewLine & "Update made by Facility Manager which requires your attention." & vbNewLine & vbNewLine & "Click Here <\\Internal_Gold Facility Inspection Action Tracker.xlsx>" & vbNewLine & vbNewLine & "Please amend the drop down in Column G accordingly (received/complete)" & vbNewLine & vbNewLine & " Kind regards "
            .Send
     End With
End Sub

Когда я нажимаю "Отладка", он выделяет строку «Если не отправлено и диапазон (« G10:G250 »).Найти ("ДА", MatchCase:= False).Count ()> 0 Тогда "

Есть идеи, что нужно изменить, чтобы предотвратить эту ошибку?

Заранее спасибо :)

1 ответ1

0

Я не уверен насчет вашего логического значения, но вам нужен тест Is Nothing на случай, если Find не получит совпадения, например

Private Sub Worksheet_Change(ByVal Target As Range)
    Static mailSent As Boolean
    Dim found As Range
    Set found = Range("G10:G250").Find("YES", MatchCase:=False)
    If found Is Nothing Then Exit Sub
    If Not mailSent And found.Count > 0 Then
        SendMail
        mailSent = True
    End If
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .