Команда поиска - как сопоставить имена на нескольких вкладках и входных данных? - PullRequest
0 голосов
/ 26 мая 2020

Я работаю над электронной таблицей, которую нужно заполнять ежеквартально, поэтому я хочу автоматизировать большую часть процесса. У меня есть основная вкладка - «@» и 16 вкладок «Команда». На @ находится таблица, которая включает в себя все 16 названий команд, я бы хотел, чтобы эта таблица обновлялась в зависимости от того, какие команды вышли из системы.

Быстрый обзор:

Таблица отправляется по электронной почте нескольким командам , каждый войдите в систему и просмотрите Продукты. После проверки всех продуктов они нажимают кнопку «Выход». Эта кнопка выполняет 3 функции;

  1. Вводит имя пользователя и дату справа от кнопки
  2. Отправляет электронное письмо владельцу таблицы
  3. Обновляет таблицу на вкладке «@».

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

Некоторые предыдущие варианты, которые я пробовал:

Sub If_Team 1()

    'Set variables
    Set sht1 = Sheets("@")
    Set sht2 = Sheets("Team 1")

    'Team1
    If sht2.Range("M2:N2") <> "" Then
        sht1.Range("C4:D4") = sht2.Range("M2:N2")
        sht1.Range("B4") = "P"
    Else
        sht1.Range("C4:D4") = ""
        sht1.Range("B4") = "O"
    End If

К сожалению, это сработало пока я не добавил больше функций If, где он затем вставил данные во всю таблицу, а не только в команду 1. Приведенное ниже также работало, пока снова не добавлялось больше значений, в которые вставлялись данные в каждое поле, где выполнялись критерии (что было их всех).

    If pfID = "Team 1" Then GoTo 1 Else
    If pfID = "Team 2" Then GoTo 2 Else

1   sht2.Cells(3, 2).Value = "P"
    sht2.Cells(3, 3).Value = Date
    sht2.Cells(3, 4).Value = Environ("username")

На каждой вкладке команды указано название команды, так что скажем «Команда 1». Команда 1 находится в ячейке «F1» на листе активной команды. На вкладке @ в таблице команда 1 - это ячейка «A3».

Я бы хотел, чтобы ActiveSheet.Range («F1») нашел то же имя на вкладке @ (sht2), а затем выполните следующие действия, если имена совпадают (мы знаем, что команда 1 на вкладке @ - это «A3»):

  • sht2.Range («A4»). Value = «P»
  • sht2.Cells ("A5"). Значение = Дата
  • sht2.Cells ("A6"). Значение = Environ ("имя пользователя")

Это Таким образом, владельцу таблицы нужно будет только просмотреть вкладку @, чтобы увидеть, кто вышел из системы, а не go на каждой вкладке. Однако я не хочу, чтобы он указывал на отдельную ячейку, как указано выше, поскольку я хотел бы, чтобы она находила и соответствовала именам.

Вот полный код:

    Sub Button2_Click() 'SIGN OFF BUTTON
    Dim cellAddr As String
    Dim aCol As Long

    ' Declare variables
    Dim c As Integer            ' Column
    Dim emBody As String        ' Body text of email
    Dim emCnt As Integer        ' Count of email addressees
    Dim emTitl As String        ' Subject line of email
    Dim emTxt As String         ' List of email addressees
    Dim myOutlook As Object     ' MS Outlook application
    Dim mySendmail As Object    ' The email to be sent
    Dim pfID As String          ' Platform ID
    Dim r As Integer            ' Row

    'Set variables
    Set sht1 = ActiveSheet
    Set sht2 = Sheets("@")

    'Cell Address
    cellAddr = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address
    'Column Number
    aCol = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column

    'Input Date and Username
    If aCol <> 1 Then _
    sht1.Range(cellAddr).Offset(, 2).Value = Date
    sht1.Range(cellAddr).Offset(, 1).Value = Environ("username")

    ' Obtain Platform details
    pfID = ActiveSheet.Range("F1").Value

    'Version ID
    vID = sht2.Range("D1").Value


    **'Input Sign Off on "@" Tab**


    ' Email subject line
    emTitl = pfID & " - Out of Support Software Review " & vID & " Completed"
    ' Email body text
    emBody = "<BODY style=font-size:12pt;font-family:Calibri>" & "Hi," & "<br>" & "<br>" & "Out of Support Software Review " & "<b>" & vID & "</b>" & " Completed for " & "<b>" & pfID & "</b>" & "."

    Set myOutlook = CreateObject("Outlook.Application")
        Set mySendmail = myOutlook.CreateItem(olMailItem)
        With mySendmail
         .to = ""
         .Subject = emTitl
         .HTMLBody = emBody
         .Display
        End With

    ' CLEAR.
    Set objEmail = Nothing:    Set objOutlook = Nothing

ErrHandler:
    '
End Sub

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

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