2015-10-19 87 views
0

我在從其他工作表引用電子郵件地址時遇到了一些問題,所以我可以在選擇某個名稱並從下拉框中選擇「打開」時發送電子郵件,它會自動發送電子郵件給那個人。我至今:引用來自不同工作表的電子郵件地址

Sub Macro1() 


Dim OutApp As Object 
Dim OutMail As Object 
Dim cell As Range 


Application.ScreenUpdating = False 
Set OutApp = CreateObject("Outlook.Application") 


On Error GoTo cleanup 
For Each cell In Columns("M").Cells.SpecialCells(xlCellTypeConstants) 
    If cell.Value Like "?*@xyz.com" And _ 
     LCase(Cells(cell.Row, "N").Value) = "open" Then 


     Set OutMail = OutApp.CreateItem(0) 
     On Error Resume Next 
     With OutMail 
      .To = cell.Value 
      .Subject = "Open Issue" 
      .Body = "Dear " & Cells(cell.Row, "J").Value _ 
        & vbNewLine & _ 
        "Issue raised: " & Cells(cell.Row, "C").Value _ 
        & vbNewLine & _ 
        "Regards" 
      .Send 
     End With 
     On Error GoTo 0 
     Set OutMail = Nothing 
    End If 
Next cell 


cleanup: 
    Set OutApp = Nothing 
    Application.ScreenUpdating = True 
End Sub 

這工作,如果我輸入手動,但M列我想,這樣當從下拉框中J選擇一個名字它匹配了有一個電子郵件地址發送電子郵件至名稱,並在從列N中選擇「打開」時發送。

我已經創建與其中M使用VLookup使用=VLOOKUP(J3,Team!B5:E8,4,FALSE)引用另一個表名稱和電子郵件的表。我曾嘗試在VLOOKUP前添加HYPERLINK,但它仍不會創建鏈接。

我也嘗試使用拆分和連接名稱創建電子郵件地址,但無濟於事。

回答

0

你的問題是你使用SpecialCells(xlCellTypeConstants)。一旦你做M列一個公式您的代碼現在會不顧一切有公式列M.

您可以調整xlCellTypeConstantsxlCellTypeFormulas或只是擺脫SpecialCells乾脆包括細胞。

+0

非常好!解決了它。但現在我得到一個問題「運行時錯誤'13' - 類型不匹配。它是嘔吐線: 如果cell.Value像」?*@xyz.com「和_ LCase(Cells(cell。行,「N」)。Value)=「open」Then – md393

+0

那麼,這是一個不同的話題不同的問題。但是,我懷疑,因爲你是在整個循環中引用列M, * EVERY ROW **,我認爲你不需要,你可以隨時調試,看看哪一行發生錯誤,然後評估爲什麼,如果你需要更多的幫助,請發表另一個問題。回答,因爲原來的問題解決了。 –

相關問題