ЕСЛИ заявление в VBA - PullRequest
       7

ЕСЛИ заявление в VBA

0 голосов
/ 12 августа 2010

У меня есть оператор If следующим образом:

If Weekday(Worksheets("Actual").Range("C1").Value) = vbSunday Then

Что делает это заявление If, создает 3 электронных письма с вложениями и ссылками на данные из субботы и пятницы, чтобы отправить, если дата, указанная в листе, является воскресеньем. Если воскресными датами являются первые числа месяца, т. Е. (1 августа 2010 г.), суббота (31 июля 2010 г.) и пятница (30 июля 2010 г.), то оператор If не распознает изменение месяца и поэтому не может создать 3 электронные письма с необходимыми вложениями и ссылками.

Как я могу создать / изменить свое заявление If, чтобы, когда 1-е число нового месяца приходилось на воскресенье или понедельник, и мне приходилось извлекать данные за предыдущий месяц, оно распознавало изменение месяца и создавало правильные вложения и ссылки ??

Вот полный код для создания электронного письма ...

Private Sub sendemail(esubj)

    Sheets("Actual").Select
    myfridate = Cells(1, 3).Value
    myfridate = DateAdd("d", -2, myfdate)
    myfridate = Format(myfridate, "mm-dd-yy")

    Sheets("Actual").Select
    mysatdate = Cells(1, 3).Value
    mysatdate = DateAdd("d", -1, myfdate)
    mysatdate = Format(mysatdate, "mm-dd-yy")


If Weekday(Worksheets("Actual").Range("C1").Value) = vbSunday Then

    Set omail = CreateItem(olMailItem)

    ROW_BEGIN = 1
    ROW_END = 72

    Sheet1.Activate
    Range("I7").Select
    fileSat = "\\firework\public\FINANCE\Daily Report\FY10\Key Indicator\"
    fileSat = fileSat & Left(Range("I7"), 3) & Right(Year(Date), 2)
    fileSat = fileSat & "\Key Indicator Daily Report - " & mysatdate & ".xls"

    Sheet1.Activate
    Range("I7").Select
    fileSun = "\\firework\public\FINANCE\Daily Report\FY10\Key Indicator\"
    fileSun = fileSun & Left(Range("I7"), 3) & Right(Year(Date), 2)
    fileSun = fileSun & "\Key Indicator Daily Report - " & mysundate & ".xls"

    Sheet1.Activate
    Range("I7").Select
    fileFri = "\\firework\public\FINANCE\Daily Report\FY10\Key Indicator\"
    fileFri = fileFri & Left(Range("I7"), 3) & Right(Year(Date), 2)
    fileFri = fileFri & "\Key Indicator Daily Report - " & myfridate & ".xls"


    With omail

    .Subject = "M Key Indicator Daily Report"
    .BodyFormat = olFormatHTML
    .HTMLBody = "<a href ='" & fileFri & "'>Key Indicator Daily Report - " & myfridate & "</a><br><a href ='" & fileSat & "'>Key Indicator Daily Report - " & mysatdate & "</a><br><a href ='" & fileSun & "'>Key Indicator Daily Report - " & mysundate & "</a>"
    .To = "me.com"
    .Display

    End With

    Set omail1 = CreateItem(olMailItem)

    With omail1

    .Subject = "R Key Indicator Daily Report"
    .BodyFormat = olFormatHTML
    .To = "you.com"
    .Attachments.Add fileFri
    .Attachments.Add fileSat
    .Attachments.Add fileSun
    .Display

    End With

    Set omail2 = CreateItem(olMailItem)

    With omail2

    .Subject = "K Key Indicator Daily Report"
    .BodyFormat = olFormatHTML
    .To = "them.com"
    .Attachments.Add fileFri
    .Attachments.Add fileSat
    .Attachments.Add fileSun
    .Display

End With

ElseIf Weekday(Worksheets("Actual").Range("C1").Value) = vbFriday Or _
    Weekday(Worksheets("Actual").Range("C1").Value) = vbSaturday Then

Else

    ROW_BEGIN = 1
    ROW_END = 72

    Sheet1.Activate
    Range("I7").Select
    fileSun = "\\firework\public\FINANCE\Daily Report\FY10\Key Indicator\"
    fileSun = fileSun & Left(Range("I7"), 3) & Right(Year(Date), 2)
    fileSun = fileSun & "\Key Indicator Daily Report - " & mysundate & ".xls"


    Set omail = CreateItem(olMailItem)

    With omail

    .Subject = "M Key Indicator Daily Report"
    .BodyFormat = olFormatHTML
    .HTMLBody = "<a href ='" & fileSun & "'>Key Indicator Daily Report - " & mysundate & "</a>"
    .To = "me.com"
    .Display

    End With

    Set omail1 = CreateItem(olMailItem)

    With omail1

    .Subject = "R Key Indicator Daily Report"
    .BodyFormat = olFormatHTML
    .To = "you.com"
    .Attachments.Add fileSun
    .Display

    End With

    Set omail2 = CreateItem(olMailItem)

    With omail2

    .Subject = "K Key Indicator Daily Report"
    .BodyFormat = olFormatHTML
    .To = "them.com"
    .Attachments.Add fileSun
    .Display

End With

End If

'ActiveWorkbook.Close
Set omail = Nothing

End Sub

1 Ответ

0 голосов
/ 12 августа 2010

Просто добавьте чек перед выпиской IF, который определяет правильное значение mysundate в зависимости от того, является ли день воскресенья 1 или днем ​​после воскресенья 1.

If DatePart("d", mysundate) = 1 _ 
        Or DatePart("d", DateAdd("d",1,mysundate) ) = 1 Then
    mysundate = DateAdd("m",-1,mysundate)
    mysatdate = DateAdd("m",-1,mysatdate)
    ...
End If
...