2015-08-02 4 views
0

Используя Access 2010, я создал форму, которая функционирует как каталог. Я хочу иметь возможность щелкнуть по полю имени и отправить электронное письмо этому лицу. У меня он работает для одного имени в каталоге, но поля второго и третьего имен дают мне следующую ошибку: Ошибка компиляции: метод или элемент данных не найдены. Выделенная часть кода: Private Sub AA2Name_Click(), в то время как Me.AA2Email выделен синим цветом.Access 2010 с помощью DoCmd.SendObject для отправки электронной почты

Полный код:

Private Sub AA1Name_Click() 
On Error GoTo Err_Handler 

DoCmd.SendObject acSendNoObject, To:=Me.AA1Email 

Exit_Handler: 
Exit Sub 

Err_Handler: 
If Err.Number <> 2501 Then 
MsgBox "Error " & Err.Number & " - " & Err.Description 
End If 
Resume Exit_Handler 
End Sub 

Private Sub AA2Name_Click() 
On Error GoTo Err_Handler 

DoCmd.SendObject acSendNoObject, To:=Me.AA2Email 

Exit_Handler: 
Exit Sub 

Err_Handler: 
If Err.Number <> 2501 Then 
MsgBox "Error " & Err.Number & " - " & Err.Description 
End If 
Resume Exit_Handler 
End Sub 

Private Sub AA3Name_Click() 
On Error GoTo Err_Handler 

DoCmd.SendObject acSendNoObject, To:=Me.AA3Email 

Exit_Handler: 
Exit Sub 

Err_Handler: 
If Err.Number <> 2501 Then 
MsgBox "Error " & Err.Number & " - " & Err.Description 
End If 
Resume Exit_Handler 
End Sub 

Спасибо всем, что может помочь!

ответ

0

Я воссоздал как можно лучше, что из вас описал выше, и все прошло хорошо для меня. Вы можете посмотреть, что у меня есть here для подсказок; используйте frmEmails - оригинальная форма VBA.

Единственное, что я могу придумать, это то, что вы, возможно, ошиблись Me.AA2Email? Возможно, проверьте свойство Name элемента управления, которое предназначено для ссылки ... оно появляется в intellisense?

На стороне заметки: Я создал другую версию той же формы в этом файле под названием frmEmails - обновленный VBA. Здесь я организовал ваш VBA, чтобы вы не дублировали столько кода. По сути, он запускает весь общий код в 1 подпрограмму, передавая переменное поле электронной почты в качестве аргумента. Это не решает вашу проблему, но я подумал, что стоит добавить.

Public Sub ComposeEmail(ToField As String) 

    On Error GoTo Err_Handler 

    DoCmd.SendObject acSendNoObject, To:=ToField 

Exit_Handler: 
    Exit Sub 

Err_Handler: 
    If Err.Number <> 2501 Then 
    MsgBox "Error " & Err.Number & " - " & Err.Description 
    End If 
    Resume Exit_Handler 

End Sub 


Private Sub AA1Email_Click() 

    ComposeEmail Me.AA1Email 

End Sub 


Private Sub AA2Email_Click() 

    ComposeEmail Me.AA2Email 

End Sub 


Private Sub AA3Email_Click() 

    ComposeEmail Me.AA3Email 

End Sub 
Смежные вопросы