First, Pat Hartman (referenced earlier) is a SHE. Second, I have variant thoughts about your problem as described.
In the general case (which may not apply here, I admit), there is limited value in trying to find a faster way to input the data you describe because you will add another layer to something that cannot be shortened - raw, general data entry. Having said that, I won't abandon you, because there is a chance that "less general" cases might have short-cuts.
There IS a possible way around this but it takes a bit of doing - and here is where your comfort level and the amount of work you are willing to put into it will govern just how useful this suggestion might be. (That is the problem - not that it can't be solved but whether it is worth the effort required.)
Create a table (if you haven't already) that lists training subjects. Be sure it has a viable prime key, perhaps an autonumber or a course catalog number or something (anything) unique and SHORT. Whatever else is in the course catalog is up to you. Unless the course number changes with different presentations of the same material, the date of a presentation should NOT be a part of the table. (Make a separate child table of this table for tracking presentations if you need to track such a thing.)
Create a junction table that shows Employee ID, Course ID, and date. Maybe that is all that is required (unless there is an Exam associated with the course and one can get a numeric or pass/fail score). If the course ID changes with date, you can omit the date. (But that is not a design I would recommend.)
Add a "scratch" Yes/No field to the employee table for "TrainingMark" or something like that. Be sure that your employee table has a unique ID for each employee, whether it is autonumber or corporate employee number or some other short field. I say "short" because you want to use the prime key of the employee table, and PKs should always be as short as possible to still get the job done.
Now build a form with a single drop-down list box for course names (from your course table) and a sub-form in CONTINUOUS MODE based on a query that shows the employee and this check-box. Not really important whether the continuous form shows anything else.
Put a button on the form to run a query to reset all employee TrainingMark fields to FALSE. (Update query of the employee table, of course.)
Put another button on the form to run an APPEND query that takes the selected value from the list box and APPENDS an entry to the junction table, one entry for each person with the TrainingMark set to TRUE. The entry should fill in all required fields - Employee ID, Course ID, date, whatever else you need.
Added wrinkle: Add a field for score or for pass/fail to the employee table if you need to track scores. This score is NOT permanent and is merely used for convenience. Further, the score or pass/fail marker has NO MEANING for any employee for whom the TrainingMark isn't TRUE.
Added nice touch: Make the UPDATE TRAINING HISTORY button automagically go back and erase the Employee fields for TrainingMark and the score or pass/fail data when done. If you have these actions as queries, you could make the button run a Macro - or you could write the macro and then convert it to VBA and run the VBA code under the button's OnClick routine.
Now open the form, reset the marks, scroll through your sub-form to check off the employees who attended training, select the drop-down for the course number, and when all employees are selected, click the button that does the update. If you have more than one class per day to update, you do this once for each class, checking the boxes for each attendee as appropriate for each course.
Like I said, a little tedious, but if you are willing to work a little, it would work fine and would be (fairly) robust.