Прежде всего, вам необходим цикл через все ячейки в Target
, потому что Target
не обязательно является одной ячейкой, но может быть диапазоном нескольких ячеек, и ваш код не будет работать на этом.
Вам нужно настроить ваши процедуры (например, Sub Approved
), чтобы они принимали параметр PersonName
, который используется для субъекта:
Sub Approved(ByVal PersonName As String)
'your code …
.Subject = "Term Request: 1/1 Test for " & PersonName
'your code …
End Sub
И, наконец, вам нужно прочитать столбец A измененной ячейки вваше событие Worksheet_Change
и укажите его в качестве параметра для вашей процедуры Approved PersonName:=Target.Parent.Cells(Cell.Row, "A")
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim AffectedRange As Range
Set AffectedRange = Intersect(Target, Target.Parent.Range("F3:H14"))
If Not AffectedRange Is Nothing Then
Dim Cell As Range
For Each Cell In AffectedRange.Cells 'loop through all changed cells
Select Case Cell.Value
Case "Pending" 'if Pending: Send term Email
CommandButton1_Click PersonName:=Target.Parent.Cells(Cell.Row, "A").Value
Case "Approved" 'If Approved: Send Approval Email
Approved PersonName:=Target.Parent.Cells(Cell.Row, "A").Value
End Select
Next Cell
End If
End Sub