В настоящее время я работаю над небольшой «базой данных» Excel, где ячейки в одном из столбцов могут редактировать несколько человек. Ячейки, которые можно редактировать, находятся в раскрывающемся меню. Как только человек изменяет одну или несколько ячеек, я хотел бы, чтобы некоторые данные из соответствующих строк были добавлены в электронное письмо. Наконец, фиксированная ячейка заполняется инициалами человека, редактирующего базу данных, в результате чего отправляется электронное письмо.
Бывший. Мои столбцы A, B и C: Имя, Профессия, Положение дел и, скажем, у меня 10 строк. Затем ячейка Положение дел в строках 2 и 7 изменяется с помощью раскрывающегося списка с «Работает» на «В отпуске». Я добавляю свои инициалы в фиксированную ячейку (например, D1), и создается электронное письмо со следующим текстом:
Марк, в отпуске
Стэн, в отпуске
Столбец B, Профессия, не важен, и его следует исключить из электронного письма.
заранее спасибо
Текущий (неполный) код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xChangeArea As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set xChange = Range("$D$1")
Set xChangeArea = Intersect(Target, xChange)
ActiveWorkbook.Save
If Not xChangeArea Is Nothing Then
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "Changes made in document: " & "(A Column Cell) is set to" & "(C column cell)"
With xMailItem
.To = "Email Address"
.Subject = "Worksheet modified in " & ThisWorkbook.FullName
.Body = xMailBody
'.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xChangeArea = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Вам необходимо предоставить нам гораздо больше деталей, чтобы мы могли вам помочь (например, какой у вас код для отправки электронной почты?). Просто чтобы указать вам направление «а»: взгляните на метод рабочего листа SelectionChange. Вы должны иметь возможность запускать свою задачу оттуда ... опять же, недостаточно знаете о ваших требованиях, чтобы сказать, что это именно то, что вам нужно
Текущий код не совсем близок к тому, чтобы быть готовым, но вот что у меня получилось - Сообщение отредактировано :)
Просто включите Отслеживание изменений в книге. Забудьте о попытках решить эту проблему по электронной почте. Это будет относительно сложная задача - справиться с этим так, как вы собираетесь, и (без обид), но вы даже не совсем приблизились к этому. «Одна или несколько ячеек», поэтому забудьте о Worksheet_Change или Selection_Change, если вы не можете смоделировать что-либо с помощью настраиваемого класса и некоторых статических переменных, а «Несколько пользователей» добавляет еще один уровень сложности. Пока у вас нет более конкретной, решаемой проблемы, которая больше, чем просто «Решите мою проблему», на этот вопрос здесь нет ответа.
Да, похоже, что эта «маленькая» задача не такая уж и маленькая, и я думаю, что я уже не в себе. Может быть, однажды, когда я получу некоторый опыт работы с VBA. В любом случае спасибо


Не могли бы вы обновить код. и объясни. Тогда мы сможем решить вашу проблему.