Start with a Data sheet, with all Data Point names (Fields) in the Header Row. [LstName, FstName, Rank, DOE, DOR, Award Title, Award2 Title, Etc.
Awards and Commendations are also earned in the field: Add a Special Awards sheet with LstName and FstName Headers. The remaining Values for each Record would be positionally identified.
Bailey |
Beetle |
Bronze Star |
7-Dec-42 |
Letter Of Commendation |
3-Sep-15 |
(I recommend that you use that particular date style when entering dates manually. Format the cells to display your preferred style)
Add a hidden VBA_Variables sheet to save particular values, such as "LatestMonthChecked" = 1-Aug-15
Finally, design your Monthly Awards Display sheet
In your Main Procedure, called by the Workbook_Open sub,
(Call Sub) CheckDOE
If Month(Now) > Month(LatestMonthChecked) Then
(Call Sub) UpdateMonthlyAwardsDisplay
Sub CheckDOE()
For Each Cel in DataSheet.Range(DOE)
Select Case Now - Cel.Value
Case 1 (Year): UpdateDataSheet(LstName, FstName, OneYearAward)
Case 3: Etc
End Select
UpdateMonthlyAwardsDisplay
End Sub
Inre the Special Awards sheet, I would use its Worksheet_Activate sub to call a UserForm to perform all editing on the sheet. The UserForm would also be charged with updating the Monthly Awards Display sheet.
Note that you can paste Ranges from Excel directly into the message editor, and if you use the "Go Advanced" option, You can format the Tables created and add Attachments to your message.