2011-08-21 119 views
-3

我想在Excel中建立一個VB腳本宏來發送電子郵件。如果用戶在列「F」中輸入值爲「否」,則腳本檢查單元L2是否包含值「0」。如果它包含「1」或任何其他值,則不會提示發送電子郵件。 除非我無法定義範圍L2:L200,否則該腳本完美起作用。宏來檢查一個特定範圍的單元格是否包含值

這就是我想要做的: 即,如果用戶在列「F」的任何行中輸入「否」並且列「L」中的同一行包含值爲「0」,它應該會提示發送電子郵件。否則,它不應該。 請有人幫助我,因爲我在excel vb宏中只有有限的知識。 I have left a space between the code where the range is defined

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ 
        (ByVal hwnd As Long, ByVal lpszOp As String, _ 
        ByVal lpszFile As String, ByVal lpszParams As String, _ 
        ByVal LpszDir As String, ByVal FsShowCmd As Long) _ 
        As Long 
------------------------------------------------------------------------------------------------------------------------- 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
Dim lngResponse As Long 
Dim Mail_Object, Email_Subject, Email_Send_To, Email_Cc, Email_Bcc, Email_Body, Email_Body1, Email_Body2, Email_Body3 As String 
    If Left(Target.Address, 2) = "$F" Then 
    If Target.Value = "No" Then 


If Range("L2").Value = "0" Then 


    lngResponse = MsgBox("Draft and send an email now ?", vbYesNo) 
    If lngResponse = vbYes Then 
Email_Subject = "Approval needed to process change order for PO " & Range("$C" & Right(Target.Address, 2)).Value & "" 
    Email_Send_To = "" 
    Email_Cc = "" 
    Email_Bcc = "" 
    Email_Body = "Hi ," 
    Email_Body1 = " Please approve to process change order for PO# " & Range("$A" & Right(Target.Address, 2)).Value & ": " 
    Email_Body2 = " Actual price on the PO: $" & Range("$B" & Right(Target.Address, 2)).Value & "" 
    Email_Body3 = " , Vendor quoted price: $" & Range("$C" & Right(Target.Address, 2)).Value & "" & "  " & "  " & "  " & "  " & "  " & "  " & "  " & "  " 
    Mail_Object = "mailto:" & Email_Send_To & "?subject=" & Email_Subject & "&body=" & Email_Body & Email_Body1 & Email_Body2 & Email_Body3 & "&cc=" & Email_Cc '& "&bcc=" & Email_Bcc 
    'On Error GoTo debugs 
    ShellExecute 0&, vbNullString, Mail_Object, vbNullString, vbNullString, vbNormalFocus 
    End If 
    End If 
    End If 
    End If 
End Sub 
+1

什麼是您的具體問題?哪一部分不按照你想要的方式行事? – Banjoe

+1

這不是VBScript,它是VBA。他們不是一回事。 –

回答

0

對於任何行,固定單元格「L2」是否需要爲0來提示輸入電子郵件?或者你的意思是「如果更改的行中的L列爲0,僅提示發送電子郵件」?如果是這樣,下面的代碼:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
    'If column is F and entry is "no", case insensitive 
    If Target.Column = 6 And UCase(Target.Value) = "NO" Then 
     'If the L column on the changed cell's row equals 0 
     If Sh.Cells(Target.Row, 12) = 0 Then 
      'Prompt for email code here 
     End If 
    End If 
End Sub 

編輯:錯過了結束如果

相關問題