Laufzeitfehler 91 - Excel VBA

662
P Hope

Ich bin neu bei VBA und habe ein Problem mit dem folgenden Code. Jedes Mal, wenn eine Zelle (außer einer in Spalte G) ausgewählt wird, wird der folgende Fehler angezeigt.

"Laufzeitfehler 91 - Objekt variabel oder mit gesperrtem Block nicht gesetzt"

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 

Wenn ich auf "Debuggen" klicke, wird die Zeile hervorgehoben - "Wenn nicht mailSent And Range (" G10: G250 "). Suchen (" JA ", MatchCase: = False) .Count ()> 0 Then"

Irgendwelche Ideen, was geändert werden muss, um diesen Fehler zu vermeiden?

Danke im Voraus :)

0
Count ist eine Eigenschaft, keine Methode. Entfernen Sie danach die Klammer. Akina vor 6 Jahren 0
Danke @Akina Ich habe deine Empfehlung ausprobiert, bekomme aber immer noch die gleiche Fehlermeldung. P Hope vor 6 Jahren 0

1 Antwort auf die Frage

0
QHarr

Ich bin mir nicht sicher, was dein Boolean ist, aber du brauchst einen Test von Is Nothing für den Fall, dass Find keine Übereinstimmung findet

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 
das hat perfekt funktioniert, danke !! P Hope vor 6 Jahren 0