Я работаю над электронной таблицей, которую нужно заполнять ежеквартально, поэтому я хочу автоматизировать большую часть процесса. У меня есть основная вкладка - «@» и 16 вкладок «Команда». На @ находится таблица, которая включает в себя все 16 названий команд, я бы хотел, чтобы эта таблица обновлялась в зависимости от того, какие команды вышли из системы.
Быстрый обзор:
Таблица отправляется по электронной почте нескольким командам , каждый войдите в систему и просмотрите Продукты. После проверки всех продуктов они нажимают кнопку «Выход». Эта кнопка выполняет 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
Любая помощь приветствуется, любые вопросы дайте мне знать! Извините, если это немного сбивает с толку.