Ошибка выполнения 91 - Excel VBA

479
P Hope

Я новичок в 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 

Когда я нажимаю «Отладка», он выделяет строку - «Если не mailSent And Range (« G10: G250 »). Find (« YES », MatchCase: = False) .Count ()> 0 Then»)

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

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

0
`Count` это свойство, а не метод. Удалить скобки после него. Akina 5 лет назад 0
Спасибо @Akina Я попробовал вашу рекомендацию, но все равно получаю то же сообщение об ошибке. P Hope 5 лет назад 0

1 ответ на вопрос

0
QHarr

Я не уверен насчет вашего логического значения, но вам нужен тест 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 
отлично сработало, спасибо !! P Hope 5 лет назад 0

Похожие вопросы