+ Reply to Thread
Results 1 to 3 of 3

Excel vba macro for multiple matching cells detection

  1. #1
    Registered User
    Join Date
    03-25-2015
    Location
    USA
    MS-Off Ver
    2013
    Posts
    3

    Excel vba macro for multiple matching cells detection

    I am implementing a macro that checks column E for dates that are 7 days away from current date.
    If cell date - current date = 7
    then an email containing the row that has the matching cell, is sent to an email address to notify.
    This is my coding it works succesfully, except for one issue.


    Sub Workbook_Open()

    Dim rngStart As Range
    Dim rngEnd As Range
    Dim rngCell As Range
    Dim strHtmlHead As String
    Dim strHtmlFoot As String
    Dim strMsgBody As String
    Dim strMsgBody1 As String
    Dim strMsg As String
    Dim objEmail As Object
    Dim OutlookApp As Object
    Dim OutlookMail As Object

    'On Error GoTo ErrHnd

    'only run if between midnight and 2AM
    'If Hour(Now) < 2 Then

    'setup basic HTML message header and footer


    'setup start of body of message
    strMsgBody = "The following task(s) are due in less than 7 days :"

    'Worksheet name
    With Worksheets("Sheet1")
    'set start of date range
    Set rngStart = .Range("E1")
    'find end of date range
    Set rngEnd = .Range("E" & CStr(Application.Rows.Count)).End(xlUp)

    'loop through all used cells in column G
    For Each rngCell In .Range(rngStart, rngEnd)
    'test if date is equal to 7 days from today
    If IsDate(rngCell.Value) Then
    If rngCell.Value - Int(Now) = 7 Then
    'add to message - use task name from column A (offset -3)
    'change as required
    strMsgBody1 = strMsgBody & "
    " & "
    " & "Task: " & rngCell.Offset(0, -3).Text _
    & " is due on " & rngCell.Text & "
    " & "
    " & "Therefore please take necessary action"
    End If
    End If
    Next rngCell

    'Note last test time/date
    rngEnd.Offset(1, -3) = Now
    rngEnd.Offset(1, -3).NumberFormat = "dd/mm/yy"
    End With

    'put message together
    strMsg = strMsgBody1

    'test message
    'MsgBox strMsg

    'create the e-mail object


    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookMail = OutlookApp.CreateItem(0)

    With OutlookMail

    .To = "[email protected]"
    .CC = ""
    .BCC = ""
    .Subject = "Task Alert"
    .HTMLBody = strMsg
    .Send
    End With


    Set OutlookMail = Nothing
    Set OutlookApp = Nothing

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True


    'remove the e-mail object

    Exit Sub

    'error handler
    ErrHnd:
    Err.Clear

    End Sub


    It works succesfully, except for one issue.
    when there are 2 or more records with the same date that matches the criteria cell date - current date = 7.
    Then only one record is displayed in the email and sent to the email address.
    For example there are 3 records as shown below.

    upload 22.png





    Only the 3rd record is detected and attached to the body of the email.

    I need to know why this happens?

    How can i edit my code to correct this?

  2. #2
    Forum Expert
    Join Date
    08-12-2012
    Location
    Sydney, Australia
    MS-Off Ver
    Excel 2010
    Posts
    5,636

    Re: Excel vba macro for multiple matching cells detection

    forum rule 3

    3. Use code tags around code. Posting code without them makes your code hard to read and difficult to be copied for testing. Highlight your code and click the [#] button at the top of the post window (if you are editing an existing post, press Go Advanced to see the [#] button). The result will appear like this in the post window:

    Please Login or Register  to view this content.
    once you have compiled i can answer your question
    If you are satisfied with the solution(s) provided, please mark your thread as Solved.
    Select Thread Tools-> Mark thread as Solved. To undo, select Thread Tools-> Mark thread as Unsolved.

  3. #3
    Registered User
    Join Date
    03-25-2015
    Location
    USA
    MS-Off Ver
    2013
    Posts
    3

    Re: Excel vba macro for multiple matching cells detection

    I have solved the issue.
    Now i have one final issue

    It works succesfully, except for one issue.

    When no dates fulfill the criteria

    rngCell.Value - Int(Now) = 7

    An email is still generated without specifying any tasks.

    i want to edit the code so that no email is sent when there are no dates fullfilling the following criteria

    rngCell.Value - Int(Now) = 7

    How can i achieve this?

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 13
    Last Post: 11-23-2011, 04:48 PM
  2. Automatic Detection and replacement of specific cells
    By kollasphotis in forum Excel General
    Replies: 2
    Last Post: 08-03-2009, 03:22 AM
  3. Printer Detection Macro - VBA
    By teshiburu1988 in forum Excel Programming / VBA / Macros
    Replies: 3
    Last Post: 06-13-2009, 12:43 PM
  4. [SOLVED] Macro Error Detection
    By elevdown in forum Excel Programming / VBA / Macros
    Replies: 2
    Last Post: 11-28-2007, 04:32 PM
  5. Detection of Macro Code
    By Chris Gorham in forum Excel Programming / VBA / Macros
    Replies: 8
    Last Post: 09-26-2005, 02:05 PM

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1