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

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

0 голосов
/ 09 июня 2010
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(Now()) = vbMonday Then

    Set omail = CreateItem(olMailItem)

    ROW_BEGIN = 1
    ROW_END = 72

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

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

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


    With omail

    .Subject = "M Daily Report"
    .BodyFormat = olFormatHTML
    .HTMLBody = "<a href ='" & fileFri & "'>Key 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"
    .Display

    End With

    Set omail1 = CreateItem(olMailItem)

    With omail1

    .Subject = "R Daily Report"
    .BodyFormat = olFormatHTML
    .To = "You"
    .Attachments.Add fileFri
    .Attachments.Add fileSat
    .Attachments.Add fileSun
    .Display

    End With

    Set omail2 = CreateItem(olMailItem)

    With omail2

    .Subject = "Mc Daily Report"
    .BodyFormat = olFormatHTML
    .To = "them"
    .Attachments.Add fileFri
    .Attachments.Add fileSat
    .Attachments.Add fileSun
    .Display

End With

Else

    ROW_BEGIN = 1
    ROW_END = 72

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


    Set omail = CreateItem(olMailItem)

    With omail

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

    End With

    Set omail1 = CreateItem(olMailItem)

    With omail1

    .Subject = "R Daily Report"
    .BodyFormat = olFormatHTML
    .To = "You"
    .Attachments.Add fileSun
    .Display

    End With

    Set omail2 = CreateItem(olMailItem)

    With omail2

    .Subject = "Mc Daily Report"
    .BodyFormat = olFormatHTML
    .To = "them"
    .Attachments.Add fileSun
    .Display

End With

End If

'ActiveWorkbook.Close
Set omail = Nothing

End Sub

У меня есть код в vba, где, если будний день - понедельник, Excel сгенерирует 3 электронных письма с 3 приложениями / ссылками. Но если это не понедельник, Excel создаст 3 электронных письма только с 1 вложением / ссылкой. Моя проблема заключается в том, что в моей электронной таблице Excel есть вкладка под названием «Фактическая», и она заполнена датой. Если эта дата в моей электронной таблице Excel будет изменена в понедельник на любой другой день недели, мой код vba все равно будет обрабатывать программу так, как будто это понедельник. Мне нужно заявление IF, которое позволит 3 электронным письмам с 3 вложениями / ссылками генерировать данные, введенные на вкладке «Факт» в моей таблице. Надеюсь, это не смущает.

Ответы [ 2 ]

1 голос
/ 09 июня 2010

Чтобы указать другое действие для пятницы или субботы, вы должны добавить второе утверждение, используя Elseif.

If Weekday(Worksheets("Actual").Range("A1").Value) = vbMonday Then
    'Do this
Elseif Weekday(Worksheets("Actual").Range("A1").Value) = vbFriday or _
Weekday(Worksheets("Actual").Range("A1").Value) = vbSaturday Then
    'Do this instead
Else
    'What happens for all other days
End If

«Сделай это вместо», если день пятница или суббота, может быть таким же простым, как «Выход из Sub», что означает, что ничего не происходит.Обратите внимание, что утверждение «или» требует от вас переформулировать все условия.Псевдокод: «Если сегодня пятница ИЛИ суббота» не будет работать, вы должны использовать «Если сегодня пятница или сегодня суббота».

Если вы обнаружили, что ваши потребности еще более конкретны, вы можете настроитьоператор смены для каждого дня недели.

1 голос
/ 09 июня 2010

В настоящее время строка кода, которая оценивает равенство по понедельникам (If Weekday(Now()) = vbMonday Then ), сверяется с текущей датой , а не с датой на листе, называемой «Фактическая».Вы должны изменить эту строку следующим образом:

If Weekday(Worksheets("Actual").Range("A1").Value) = vbMonday Then

Вам нужно заменить A1 на местоположение значения даты, с которым вы проверяете, но это должно вернуть дату, еслион правильно отформатирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...