Ошибка выполнения 91 Переменная объекта или с не заданной переменной блока - PullRequest
0 голосов
/ 10 июля 2020

Я получаю сообщение об ошибке «Ошибка выполнения 91 Объектная переменная или с не заданной блочной переменной». Код сработал один или два раза, а затем перестал работать.

Может ли кто-нибудь помочь с тем, что я делаю неправильно?

Я получаю сообщение об ошибке со следующим кодом в строках указано ниже:

Private Sub CommandButton1_Click()
    Dim Sht As Excel.Worksheet
    Set Sht = ThisWorkbook.ActiveSheet
 
    Recip = Worksheets("STIF Report").AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells(1, 6) ----!
   
    Custody = Worksheets("STIF Report").AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells(1, 5) ----!
   
    Dim rng As Range
    Set rng = Sht.Range("B43:D85")
        rng.Copy
   
    Dim OutApp As Object
    Set OutApp = CreateObject("Outlook.Application")
 
    Dim OutMail As Object
    Set OutMail = OutApp.CreateItem(0)
 
    Dim vInspector As Object
    Set vInspector = OutMail.GetInspector
   
    Dim wEditor As Object
    Set wEditor = vInspector.WordEditor
    
    With OutMail
        .TO = Recip
        .CC = ""
        .Subject = "STIF Vehicle Confirmation" & " - " & Custody ----!
        .display
        
         wEditor.Paragraphs(1).Range.Text = "Hello All," & Chr(11) & Chr(11) & "I hope this email finds you all doing well." & Chr(11) & Chr(11) & _
         "Can you please confirm if the below STIF vehicle details are accurate for the accounts below? If the vehicle has changed, can you please confirm the new STIF vehicle name and CUSIP?" & vbCrLf
        
         wEditor.Paragraphs(2).Range.Paste
    End With
 
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

1 Ответ

0 голосов
/ 13 июля 2020

Похоже, что проблема, с которой я столкнулся, связана с несколькими таблицами на одном листе, и макросу было трудно понять, о какой таблице я имел в виду. На листе две таблицы (одна поверх другой), и мне нужна была вторая таблица, вставленная в тело письма после фильтрации информации, которую я хотел отобразить. Для этого мне пришлось назвать таблицу; в данном случае «Электронная почта» и вызовите его со свойством .ListObjects, которым в данном случае является .ListObjects («Электронная почта»), чтобы макрос понял, на какой таблице я хотел бы сфокусироваться.

Вы можете увидеть обновленный код ниже:

Private Sub CommandButton1_Click()
    Dim Sht As Excel.Worksheet
    Set Sht = ThisWorkbook.ActiveSheet
    Recip = Worksheets("STIF Report").ListObjects("Email").AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells(1, 6)
  
    Custody = Worksheets("STIF Report").ListObjects("Email").AutoFilter.Range.Offset(2).SpecialCells(xlCellTypeVisible).Cells(1, 5)
  
    Dim rng As Range
    Set rng = Sht.Range("B43:D85")
        rng.Copy
  
    Dim OutApp As Object
    Set OutApp = CreateObject("Outlook.Application")
    Dim OutMail As Object
    Set OutMail = OutApp.CreateItem(0)
    Dim vInspector As Object
    Set vInspector = OutMail.GetInspector
  
    Dim wEditor As Object
    Set wEditor = vInspector.WordEditor
   
    With OutMail
        .TO = Recip
        .CC = ""
        .Subject = "STIF Vehicle Confirmation" & " - " & Custody
        .display
       
         wEditor.Paragraphs(1).Range.Text = "Hello All," & Chr(11) & Chr(11) & "I hope this email finds you all doing well." & Chr(11) & Chr(11) & _
         "Can you please confirm if the below STIF vehicle details are accurate for the accounts below? If the vehicle has changed, can you please confirm the new STIF vehicle name and CUSIP?" & vbCrLf
       
         wEditor.Paragraphs(2).Range.Paste
    End With
End Sub
...