2

Существует ли более эффективный способ отправки напоминаний по электронной почте пользователю на основе часто меняющихся значений ячеек? Вот код того, над чем я работаю, чтобы вы, ребята, могли понять контекст вопроса.

    'This is the main function

Sub notify()          
 Dim rng As Range
 For Each rng In Range("F3:F14")
    If (rng.Value = 1) Then
        Call mymacro
    End If
 Next rng

End Sub
-----------------------------------------------------------------------

  'This is the function that sends an email when called by the main function

  Private Sub mymacro()  
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Hi there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
    On Error Resume Next
    With xOutMail
        .To = "email address"
        .CC = ""
        .BCC = ""
        .Subject = "test succeeded"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Объяснение:

Оба приведенных выше кода находятся в одном модуле моего листа. Код работал абсолютно нормально, чтобы отправить электронное письмо (через Outlook) пользователю. Например, если F3 и F7 оцениваются как true, пользователю будет отправлено два электронных письма.

Теперь возникает проблема: как я могу отредактировать свой код, чтобы в случае возникновения одинаковой ситуации (F3 и F7 оцениваются как true), два электронных письма, отправленные пользователю, будут указывать, какая ячейка оценивается как true. Другими словами, каждое отправленное электронное письмо будет отличаться, указав, какая конкретная ячейка была оценена как истинная.

Кроме того, сможет ли код быть перезапущен, если данные внутри ячейки ("F3:F14") обновлены?

Лично у меня нет опыта работы с VBA, поэтому было бы неплохо, если бы вы, ребята, могли объяснить это в терминах непрофессионала. Спасибо! Действительно ценю это! :)

1 ответ1

0

Учитывая, что об этом спросили 2 года назад, я уверен, что вы либо решили проблему, либо пошли дальше. Но это вошло в верхнюю часть списка без ответа, так что ... здесь-вперед!

Чтобы ответить на первый вопрос, есть ли более эффективный способ? Часть, которой вы поделились, кажется, запускается вручную, то есть программа не запустится, если вы не выполните действие. Я бы попытался автоматизировать эту задачу с помощью процесса, управляемого событиями. Это может быть сделано множеством разных способов, и мне нужно знать больше о вашем рабочем процессе, чтобы получить какую-либо значительную эффективность.

И второй вопрос, о смене электронной почты. Виды открытого вопроса с учетом текущего состояния кода. Краткое простое объяснение состоит в том, чтобы сохранить значение ячеек в переменной или двух, а затем использовать эту переменную в своем электронном письме.

Например, если у вас была переменная с ужасным именем variableX, и эта переменная содержала диапазон F3, тогда ваше электронное письмо могло бы использовать variableX.

Простое изменение, чтобы добавить информацию:

,Subject = "The cell at " & variableX.address & " is " & variableX. value & " test succeeded"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .