Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Sub Expire_New()
- Dim arr() As Variant
- Dim msg(1 To 4) As String
- Dim x As Long
- Dim dDiff As Long
- With ActiveSheet
- x = .Cells(.Rows.Count, 19).End(xlUp).Row
- arr = .Cells(21, 1).Resize(x - 20, 26).Value
- End With
- For x = LBound(arr, 1) To UBound(arr, 1)
- If Len(arr(x, 19)) * Len(arr(x, 1)) * Len(arr(x, 2)) Then
- dDiff = DateDiff("d", Date, arr(x, 19))
- Select Case dDiff
- Case Is <= 0: msg(1) = Expired(msg(1), arr(x, 1), arr(x, 2), arr(x, 19))
- Case Is <= 31: msg(2) = Expiring(msg(2), arr(x, 1), arr(x, 2), arr(x, 19), dDiff)
- End Select
- End If
- If Len(arr(x, 19)) = 0 And Len(arr(x, 1)) > 0 And Len(arr(x, 2)) > 0 Then
- msg(3) = NoTraining(msg(3), arr(x, 1), arr(x, 2), arr(x, 18))
- End If
- If Len(arr(x, 19)) > 0 And Len(arr(x, 1)) > 0 And Len(arr(x, 2)) > 0 Then
- dDiff = DateDiff("d", Date, arr(x, 19))
- Select Case dDiff
- Case Is > 31: msg(4) = MsgBox("There are either no expired safeguarding certificates, or no certificate expiring within the next 31 days.", vbCritical, "Warning")
- End Select
- End If
- Next x
- For x = LBound(msg) To UBound(msg)
- msg(x) = Replace(msg(x), "@NL", vbCrLf)
- If Len(msg(x)) < 1024 Then
- MsgBox msg(x), vbExclamation, "Safeguarding Certificate Notification"
- Else
- MsgBox "String length for notification too long to fit into this MessageBox", vbExclamation, "Invalid String Length to Display"
- End If
- Next x
- Erase arr
- Erase msg
- End Sub
- Private Function Expired(ByRef msg As String, ByRef var1 As Variant, ByRef var2 As Variant, ByRef var3 As Variant) As String
- If Len(msg) = 0 Then msg = "Persons with EXPIRED Safeguading Certificates@NL@NL"
- Expired = msg & "(@var3) @var1 @var2@NL"
- Expired = Replace(Expired, "@var1", var1)
- Expired = Replace(Expired, "@var2", var2)
- Expired = Replace(Expired, "@var3", var3)
- End Function
- Private Function Expiring(ByRef msg As String, ByRef var1 As Variant, ByRef var2 As Variant, ByRef var3 As Variant, ByRef d As Long) As String
- If Len(msg) = 0 Then msg = "Persons with EXPIRING Safeguarding Certificates@NL@NL"
- Expiring = msg & "(@var3) @var1 @var2 (@d days remaining)@NL"
- Expiring = Replace(Expiring, "@var1", var1)
- Expiring = Replace(Expiring, "@var2", var2)
- Expiring = Replace(Expiring, "@var3", var3)
- Expiring = Replace(Expiring, "@d", d)
- End Function
- Private Function NoTraining(ByRef msg As String, ByRef var1 As Variant, ByRef var2 As Variant, ByRef var3 As Variant) As String
- If Len(msg) = 0 Then msg = "SAFEGUARDING TRAINING NOT COMPLETED FOR @NL@NL"
- NoTraining = msg & " @var1 @var2@NL"
- NoTraining = Replace(NoTraining, "@var1", var1)
- NoTraining = Replace(NoTraining, "@var2", var2)
- NoTraining = Replace(NoTraining, "@var3", var3)
- End Function
- If Len(arr(x, 19)) > 0 And Len(arr(x, 1)) > 0 And Len(arr(x, 2)) > 0 Then
- dDiff = DateDiff("d", Date, arr(x, 19))
- Select Case dDiff
- Case Is > 31: msg(4) = MsgBox("There are either no expired safeguarding certificates, or no certificate expiring within the next 31 days.", vbCritical, "Warning")
- End Select
- End If
Add Comment
Please, Sign In to add comment