Определите значения ячеек в той же строке, что и строка, которая запустила макрос - PullRequest
0 голосов
/ 08 ноября 2019

Я хочу получить значения ячеек из определенных ячеек в той же строке, что и мой макрос.

enter image description here

Мне удалось собратьмакрос, который находит значение ячейки из определенных ячеек в зависимости от того, какое значение имеют ячейки запуска. Приведенный ниже код сообщает макросу, что если значение ячейки ячейки B5 равно 1, скопируйте текст в A8, A5 и A2 в определенные области текста письма. Все ZZZZZ это заранее заданные фразы по почте.

Что я хочу, так это то, что если я введу 1 в любую строку в столбце K, он возьмет значение ячейки из столбцов C, F и G в той же строке, что и 1, и поместит егогде A8, A5 и A2 вставляется в почту. Если бы я положил 2 в B5, макрос выбирает A9 вместо A8. Но этот код не вставлен ниже, но идентичен. Я хочу, чтобы код был несколько похож, но знаю, что писать вместо B5, A8 и т. Д.

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    'If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("B5"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value = 1 Then
        Call Mail_small_Text_Outlook1
    End If
__________________________________________________________________________
Sub Mail_small_Text_Outlook1()
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "ZZZZZZZZZ," & vbNewLine & vbNewLine & _
                "ZZZZZZZZZZZZZZZZZZ: " & Range("A8").Value & vbNewLine & _
                "  " & vbNewLine & _
                "ZZZZZZZZZZ: " & Range("A5").Value & vbNewLine & vbNewLine & vbNewLine & _
                "ZZZZZZZZZ" & vbNewLine & _
                "ZZZZZZZZZ"
    On Error Resume Next
    With xOutMail
        .To = "mail@mail.com"
        .CC = ""
        .BCC = ""
        .Subject = "ZZZZZ - " & Range("A2").Value
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

1 Ответ

0 голосов
/ 08 ноября 2019

Вы можете ссылаться на свойство Row измененной ячейки, Target, таким образом:

if target.column=11 then  'k
   if target.value=1 then
     cells(target.row,"C") '...whatever
     cells(target.row,"F") '...whatever
     cells(target.row,"G") '...whatever
   end if
end if
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...