Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim vTermsLeft As Byte, vRow As Integer, vRow2 As Integer, vCol As Byte, vSheet As Integer, _
vPos As String, vEmpSt As String, vDate1 As Date, vDate2 As Date, vHiresLeft As Byte
vSheet = 2
Do Until vSheet > Sheets.Count
vCol = 2
ColLoop:
Do Until vCol > Application.WorksheetFunction.CountA(Sheets(vSheet).Rows("3"))
vDate1 = Left(Sheets(vSheet).Cells(3, vCol), InStr(Sheets(vSheet).Cells(3, vCol), "-") - 1)
If vDate1 + 100 < Date Then
vCol = vCol + 1
GoTo ColLoop:
End If
vDate2 = Right(Sheets(vSheet).Cells(3, vCol), InStr(Sheets(vSheet).Cells(3, vCol), "-") - 1)
vTermsLeft = Application.WorksheetFunction.CountIf(Sheets(vSheet).Range("a:a"), "Terminations")
vHiresLeft = Application.WorksheetFunction.CountIf(Sheets(vSheet).Range("a:a"), "New Hires")
vRow = 1
Do Until vTermsLeft = 0 And vHiresLeft = 0
Select Case Sheets(vSheet).Range("a" & vRow)
Case "Terminations"
vPos = Sheets(vSheet).Range("a" & vRow - 2)
vPos = Right(vPos, Len(vPos) - InStr(vPos, " "))
vEmpSt = Left(vPos, InStr(vPos, " ") - 1)
vPos = Right(vPos, Len(vPos) - InStr(vPos, " "))
Call FindTerms(vRow, vCol, vEmpSt, vPos, vDate1, vDate2, vSheet)
vTermsLeft = vTermsLeft - 1
Case "New Hires"
vPos = Sheets(vSheet).Range("a" & vRow - 3)
vPos = Right(vPos, Len(vPos) - InStr(vPos, " "))
vEmpSt = Left(vPos, InStr(vPos, " ") - 1)
vPos = Right(vPos, Len(vPos) - InStr(vPos, " "))
Call FindHires(vRow, vCol, vEmpSt, vPos, vDate1, vDate2, vSheet)
vHiresLeft = vHiresLeft - 1
End Select
vRow = vRow + 1
Loop
vCol = vCol + 1
Loop
vSheet = vSheet + 1
Loop
End Sub
Sub FindTerms(ByVal vRow As Integer, vCol As Byte, vEmpSt As String, vPos As String, vDate1 As Date, vDate2 As Date, vSheet As Integer)
Dim vRow2 As Integer
If Sheets(vSheet).Cells(vRow, vCol) <> 0 Then
vRow2 = 2
Sheets(vSheet).Cells(vRow, vCol).ClearComments
Do Until vRow2 > Application.WorksheetFunction.CountA(Worksheets(1).Range("b:b"))
If Worksheets(1).Range("f" & vRow2) = "Termination" _
And Worksheets(1).Range("e" & vRow2) = Sheets(vSheet).Name _
And Worksheets(1).Range("g" & vRow2) = Left(Sheets(vSheet).Range("a" & vRow - 2), 2) _
And Worksheets(1).Range("c" & vRow2) = vPos _
And Worksheets(1).Range("d" & vRow2) = vEmpSt _
And Worksheets(1).Range("h" & vRow2) >= vDate1 _
And Worksheets(1).Range("h" & vRow2) <= vDate2 Then
If Sheets(vSheet).Range("f2") = vbNullString Then
Sheets(vSheet).Range("f2") = Worksheets(1).Range("b" & vRow2)
Else: Sheets(vSheet).Range("f2") = Sheets(vSheet).Range("f2") & vbLf & Worksheets(1).Range("b" & vRow2)
End If
End If
vRow2 = vRow2 + 1
Loop
Sheets(vSheet).Cells(vRow, vCol).AddComment Sheets(vSheet).Range("f2").Value
Sheets(vSheet).Range("f2") = vbNullString
End If
End Sub
Sub FindHires(ByVal vRow As Integer, vCol As Byte, vEmpSt As String, vPos As String, vDate1 As Date, vDate2 As Date, vSheet As Integer)
Dim vRow2 As Integer
If Sheets(vSheet).Cells(vRow, vCol) <> 0 Then
vRow2 = 2
Sheets(vSheet).Cells(vRow, vCol).ClearComments
Do Until vRow2 > Application.WorksheetFunction.CountA(Worksheets(1).Range("b:b"))
If Worksheets(1).Range("f" & vRow2) = "New Hire" _
And Worksheets(1).Range("e" & vRow2) = Sheets(vSheet).Name _
And Worksheets(1).Range("g" & vRow2) = Left(Sheets(vSheet).Range("a" & vRow - 3), 2) _
And Worksheets(1).Range("c" & vRow2) = vPos _
And Worksheets(1).Range("d" & vRow2) = vEmpSt _
And Worksheets(1).Range("h" & vRow2) >= vDate1 _
And Worksheets(1).Range("h" & vRow2) <= vDate2 Then
If Sheets(vSheet).Range("f2") = vbNullString Then
Sheets(vSheet).Range("f2") = Worksheets(1).Range("b" & vRow2)
Else: Sheets(vSheet).Range("f2") = Sheets(vSheet).Range("f2") & vbLf & Worksheets(1).Range("b" & vRow2)
End If
End If
vRow2 = vRow2 + 1
Loop
Sheets(vSheet).Cells(vRow, vCol).AddComment Sheets(vSheet).Range("f2").Value
Sheets(vSheet).Range("f2") = vbNullString
End If
End Sub
Bookmarks