This post was copied from another thread.
When designing a Project, it is Best Practice to follow some simple steps in order:
- Gather and Record Data
- Design Data Display
- Determine Rules and Constraints
- Lay Out Data Input
- Write Code
Steps 1 to 3 are yours and yours alone responsibility. In my opinion as a tutor and previous teacher, Steps 1 and 2 are a good project for those students in the technical classes, (Science, Math, Electrical, et al.) Many of them will be able to use the experience in their future careers.
Gather and Record Data
Organizing data is for the purpose of programming. All such sheets will not be usually be visible in the Master workbook.
You already have all the data gathered. The recording of data must be in simple lists or matrices as in my previous attachment and in the new SchoolTimingMatrix Sheet in this attachment. The TeachersNameList Sheet, as edited, is also an acceptable method, although the coder does not need any formatting except, always make the column headers Bold, Bottom or side Bordered and one size large font than the list font. This is a Best Practice for VBA
One Data zone you have not obviously considered is Student schedules: Matrices by Class of courses and students with Intersections showing Periods. See sheet in attachment. Do not consider saving space by limiting the number of data lists and matrix sheets. It is counter productive. Use as many as desired to organize the data effectively.
Design Data Display
In this attachment, you have two good examples of displaying Data, Teachers Workload and Daily school Timing. Note that Data Displays may not be in the Master Workbook, however blanks templates of each should be included therein.
This is where you let your imagination free. As you have been doing as you recorded data, create a display that has all that you need on it. A worksheet is a good design board, put all of them in one separate workbook. Only place Blank templates in the Master after all design work has been completed and Finalized.
Note that such Template sheets will not usually be visible in the Master workbook. Use as many as you need. When used, the Code will insert them into a new workbook as visible.
Note that some Data is best displayed on a UserForm.
Determine Rules and Constraints
This is where you tell the coder/programmer what must and can't be. These Restraints and Rules should/can be in a Word document with headings for each subject
Course Assignments:
No course can less than 10, nor more then 99 students
No course can less than 1 nor more than 10 teachers
No teacher can teach more than 3 courses in the same period
No student can enroll in 2 courses in the same period
Etc
Teachers Workload
The administration needs a complete sheets in a separate workbook, named ("***") with all teachers, all Classes, all courses for 4 weeks in the future, updated at start of Office each Friday, or the last workday before Friday.
All teachers need a sheet that shows only their workload, for two weeks in the future, updated as above.
The first three steps are usually interactive, that is, you will be moving between each step as thought occur, and errors and omissions become apparent.
Lay Out Data Input
In my mind this means designing the UserForms. However this design process can be done on a worksheet because it is merely an image of what you want it to look like. You can use worksheet controls to represent command buttons. Many professional Programming shops actually use printed images. It may be the most important concept to consider the Form User's workflow while designing the Form. It is best Practice to use a different form for each task. ie assigning a teacher to different courses, inputting a student's courses, et al. The programmer will make suggestions as to true Best Practice as he understand the UserForm possibilites and constraints.
It is best practice to design forms on the smallest computer monitor that will be used to view them, but it is not necessary.
This process is very interactive with step 2 and 3.
I hope this is of help for you in completing the Project in a timely and efficient manner.
ps: Yes the updated timetable is possible, but as you see, you will be doing most of the actual design of what you want and need. st
pps: I did some Best Practice Renaming on the UserForm and the Modules in the attached for your consideration. st