easy way to enter the data for a single date without having to change relationships and everything else
Should be no reason to change the relationships. You have developed a proper datbase application, so the data is the data. Changing an input form should have absolutely no change to your data relationship.
So (I am doing this off my head, correct me if wrong), you currently open the input form using code like this
DoCmd.OpenForm "frm_CalendarInputBox", , , , , acDialog, Format(selectedDate, "mm/dd/yyyy") & ";" & empID
That worked when you only had a single record for each date. So now change the recordsource of the input form. Something like
Select distinct absencedate, empid from tblYearCalendar
and some join to bring in the employee name. So the main form needs to show the employee name, and the absence date.
The subform which has the codes (pull down), hours, and absencereason. Would be linked to the main form by something like
link master fields: empid; absenceDate
link child Fields: empId; absenceDate
The display and entry of the absence reason is a user interface preference. I personally would put it in my subform as the 3rd column. You would not be able to see much of the text. But this form is more for entry than display. I would think for displaying this the user is going to a report. So I would add zoom box feature. If you click on that field it would pop open in a large zoom allowing you to read it. Same feature to allow you to easily add it. This feature is similar to the Access expression builder. You could even fire this on the on enter event. So when you enter that field, it would immediately open into zoom box. In my image the subform was a datasheet with an absence code combobox and a textbox to add the hours. Instead it could be a tabular form and you could make the textbox taller than the other controls. I think the more datasheet looking view is cleaner. (In truth you will use a tabular continuous subform so that you could have a combobox for the codes, a textbox for the hours, and a textbox for the reason)
You could also break the absence field into a seperate box below the subform, but that gets confusing to me. You would have a main form, a continous subform, and then another box which would be related to the record selected in the subform.
You could do this completely different and not use a subform and have a single form view. In that design your form would remain exactly the same as it is currently, but you would add a button to add a new record. This would move to the new record and you would set the defaults of that record to the empid, and selected date. Adding, editing, and deleting in that design would be easy. However, it will be hard to show the user how many absences there are.