[英]Looking for Outlook to send an email based from data generated from an IF statement
我知道還有其他關於同一件事的帖子,但我不能讓它與我的變量一起工作。
我有2列數據使用IF語句,這些語句是IF(Asus!C:C=TODAY(),"Promo Today","")
。 我想使用VBA來檢測一個單元格何時變成"Promo Today"
並向收件人發送一封電子郵件(根據我的理解,電子郵件地址必須在單元格中定義,如我將發布的代碼中所示,我試着把它弄進去)。
第2列和第3列,正如我在代碼中嘗試定位的那樣,是IF語句所在的列,我沒有考慮到這一點,我只是想到的是我是否必須將行作為目標好?
Private Sub Worksheet_Change()
Dim sEmailBodyp1 As String
Dim sEmailSubject As String
Dim sEmailTo As String
Dim Outlook As Object
Dim MasterCheck As Worksheet
sEmailTo = MasterCheck.Range("D2").Value
sEmailSubject = MasterCheck.Range("E2").Value
sEmailBodyp1 = MasterCheck.Range("F2").Value
If Target.Column = 2 And Target.Value = "Promo Today" Then
With CreateObject("Outlook.Application").CreateItem(0)
.To = sEmailTo
.Subject = sEmailSubject
.Body = sEmailBodyp1
.Send
End With
End If
End Sub
在VBA上有幾種訪問工作Sheet
方法,最常見的是:
Sheet
上設置(用戶可以更改此) 然后像這樣調用你的代碼:
Dim myWorksheet As Worksheet
Set myWorksheet = Worksheets("Sheet1") 'The user defined Excel sheet name.
你可以這樣簡單地調用它(假設它的名字是Sheet1
):
Sheet1.Activate
所以,回到你的代碼,因為變量MasterCheck
沒有初始化 ,我們可以使用第一種方法並初始化它的值:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sEmailBodyp1 As String
Dim sEmailSubject As String
Dim sEmailTo As String
Dim Outlook As Object
Dim MasterCheck As Worksheet
Set MasterCheck = Sheets("MySheet") 'Change "MySheet" with your sheet name
sEmailTo = MasterCheck.Range("D2").Value
sEmailSubject = MasterCheck.Range("E2").Value
sEmailBodyp1 = MasterCheck.Range("F2").Value
If Target.Column = 2 And Target.Value = "Promo Today" Then
With CreateObject("Outlook.Application").CreateItem(0)
.To = sEmailTo
.Subject = sEmailSubject
.Body = sEmailBodyp1
.Send
End With
End If
End Sub
這樣的事情應該有效:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B:B")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
Dim sEmailBodyp1 As String
Dim sEmailSubject As String
Dim sEmailTo As String
Dim Outlook As Object
Dim MasterCheck As Worksheet
Set MasterCheck = ActiveWorkbook.Sheets("SheetName") 'Change this with your sheet name
sEmailTo = MasterCheck.Range("D2").Value
sEmailSubject = MasterCheck.Range("E2").Value
sEmailBodyp1 = MasterCheck.Range("F2").Value
If Target.Value = "Promo Today" Then
With CreateObject("Outlook.Application").CreateItem(0)
.To = sEmailTo
.Subject = sEmailSubject
.Body = sEmailBodyp1
.Send
End With
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.