Guest User

Untitled

a guest
Sep 24th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. Sub Expire_New()
  2.  
  3. Dim arr() As Variant
  4. Dim msg(1 To 4) As String
  5. Dim x As Long
  6. Dim dDiff As Long
  7.  
  8. With ActiveSheet
  9. x = .Cells(.Rows.Count, 19).End(xlUp).Row
  10. arr = .Cells(21, 1).Resize(x - 20, 26).Value
  11. End With
  12.  
  13. For x = LBound(arr, 1) To UBound(arr, 1)
  14. If Len(arr(x, 19)) * Len(arr(x, 1)) * Len(arr(x, 2)) Then
  15. dDiff = DateDiff("d", Date, arr(x, 19))
  16. Select Case dDiff
  17. Case Is <= 0: msg(1) = Expired(msg(1), arr(x, 1), arr(x, 2), arr(x, 19))
  18. Case Is <= 31: msg(2) = Expiring(msg(2), arr(x, 1), arr(x, 2), arr(x, 19), dDiff)
  19. End Select
  20. End If
  21.  
  22. If Len(arr(x, 19)) = 0 And Len(arr(x, 1)) > 0 And Len(arr(x, 2)) > 0 Then
  23. msg(3) = NoTraining(msg(3), arr(x, 1), arr(x, 2), arr(x, 18))
  24. End If
  25.  
  26. If Len(arr(x, 19)) > 0 And Len(arr(x, 1)) > 0 And Len(arr(x, 2)) > 0 Then
  27. dDiff = DateDiff("d", Date, arr(x, 19))
  28. Select Case dDiff
  29. Case Is > 31: msg(4) = MsgBox("There are either no expired safeguarding certificates, or no certificate expiring within the next 31 days.", vbCritical, "Warning")
  30. End Select
  31. End If
  32.  
  33. Next x
  34.  
  35. For x = LBound(msg) To UBound(msg)
  36. msg(x) = Replace(msg(x), "@NL", vbCrLf)
  37. If Len(msg(x)) < 1024 Then
  38. MsgBox msg(x), vbExclamation, "Safeguarding Certificate Notification"
  39. Else
  40. MsgBox "String length for notification too long to fit into this MessageBox", vbExclamation, "Invalid String Length to Display"
  41. End If
  42. Next x
  43.  
  44. Erase arr
  45. Erase msg
  46.  
  47. End Sub
  48.  
  49. Private Function Expired(ByRef msg As String, ByRef var1 As Variant, ByRef var2 As Variant, ByRef var3 As Variant) As String
  50.  
  51. If Len(msg) = 0 Then msg = "Persons with EXPIRED Safeguading Certificates@NL@NL"
  52.  
  53. Expired = msg & "(@var3) @var1 @var2@NL"
  54. Expired = Replace(Expired, "@var1", var1)
  55. Expired = Replace(Expired, "@var2", var2)
  56. Expired = Replace(Expired, "@var3", var3)
  57.  
  58. End Function
  59.  
  60. 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
  61.  
  62. If Len(msg) = 0 Then msg = "Persons with EXPIRING Safeguarding Certificates@NL@NL"
  63.  
  64. Expiring = msg & "(@var3) @var1 @var2 (@d days remaining)@NL"
  65. Expiring = Replace(Expiring, "@var1", var1)
  66. Expiring = Replace(Expiring, "@var2", var2)
  67. Expiring = Replace(Expiring, "@var3", var3)
  68. Expiring = Replace(Expiring, "@d", d)
  69.  
  70. End Function
  71.  
  72. Private Function NoTraining(ByRef msg As String, ByRef var1 As Variant, ByRef var2 As Variant, ByRef var3 As Variant) As String
  73.  
  74. If Len(msg) = 0 Then msg = "SAFEGUARDING TRAINING NOT COMPLETED FOR @NL@NL"
  75.  
  76. NoTraining = msg & " @var1 @var2@NL"
  77. NoTraining = Replace(NoTraining, "@var1", var1)
  78. NoTraining = Replace(NoTraining, "@var2", var2)
  79. NoTraining = Replace(NoTraining, "@var3", var3)
  80.  
  81. End Function
  82.  
  83. If Len(arr(x, 19)) > 0 And Len(arr(x, 1)) > 0 And Len(arr(x, 2)) > 0 Then
  84. dDiff = DateDiff("d", Date, arr(x, 19))
  85. Select Case dDiff
  86. Case Is > 31: msg(4) = MsgBox("There are either no expired safeguarding certificates, or no certificate expiring within the next 31 days.", vbCritical, "Warning")
  87. End Select
  88. End If
Add Comment
Please, Sign In to add comment