Teachers always have tons of task to complete. They have to prepare notes for tomorrow’s class, track student’s performance, prepare reports for top management and many more. Let’s make the mark entry an easy task for them.
Download Now
If you want to start to use the software as soon as possible, then you can:
Otherwise, if you want to DIY, you can read the contents below.
Let’s Prepare the GUI
As shown in these images, prepare the tool with necessary sheets.
| Sheet Name | Description |
| Entry | This is the GUI for mark entry. |
| Database | This sheet acts as database and holds students’ marks |
| List | This sheet has data that will be used to create dropdowns. |
| Students | This sheet is the maps various students to their respective classes. |
From the VBA project window, rename sheets as shown here.
Let’s make it functional
Copy the macro to a new module and attach macros to their respective buttons.
| Macro | Attach to Button | Description |
| Class_dropdown | – | This macro creates the drop down for “Class” |
| Section_dropdown | – | This macro creates the drop down for “Section” |
| Subject_dropdown | – | This macro creates the drop down for “Subject” |
| Show_List | Show List | This macro shows Students from the Selected Class and Section |
| Add_To_Database | Submit | This macro upload mark entries into the database sheet. |
Sub Class_dropdown()
Dim lr As Long
Dim r As Long
lr = lst.Range("A" & Rows.Count).End(xlUp).Row
Dim prodlist As String
For r = 2 To lr
If prodlist = "" Then
prodlist = lst.Range("A" & r).Value
Else
prodlist = prodlist & "," & lst.Range("A" & r).Value
End If
Next r
With entry.Range("C2:D2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=prodlist
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Section_dropdown()
Dim lr As Long
Dim r As Long
lr = lst.Range("B" & Rows.Count).End(xlUp).Row
Dim prodlist As String
For r = 2 To lr
If prodlist = "" Then
prodlist = lst.Range("B" & r).Value
Else
prodlist = prodlist & "," & lst.Range("B" & r).Value
End If
Next r
With entry.Range("G2:H2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=prodlist
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Subject_dropdown()
Dim lr As Long
Dim r As Long
lr = lst.Range("C" & Rows.Count).End(xlUp).Row
Dim prodlist As String
For r = 2 To lr
If prodlist = "" Then
prodlist = lst.Range("C" & r).Value
Else
prodlist = prodlist & "," & lst.Range("C" & r).Value
End If
Next r
With entry.Range("K2:O2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=prodlist
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Show_List()
Dim r As Long
Dim lr As Long
Dim e As Long
e = 5
lr = std.Range("A" & Rows.Count).End(xlUp).Row
For r = 2 To lr
If std.Range("A" & r).Value = entry.Range("C2").Value And std.Range("B" & r).Value = entry.Range("G2").Value Then
e = e + 1
entry.Range("B" & e).Value = std.Range("C" & r).Value
entry.Range("C" & e).Value = std.Range("D" & r).Value
End If
Next r
End Sub
Sub Add_To_Database()
Dim r As Long
Dim lr As Long
Dim e As Long
e = 5
lr = entry.Range("B" & Rows.Count).End(xlUp).Row
For r = 6 To lr
Dim lrind As Long
lrind = db.Range("B" & Rows.Count).End(xlUp).Row + 1
db.Range("A" & lrind).Value = entry.Range("C2").Value
db.Range("B" & lrind).Value = entry.Range("G2").Value
db.Range("C" & lrind).Value = entry.Range("K2").Value
db.Range("D" & lrind).Value = entry.Range("C" & r).Value
db.Range("E" & lrind).Value = entry.Range("K" & r).Value
Next r
End Sub
Tweak it
This script lets you create a very basic mark entry system. However, you can tweak it and create analytical reports using data from the sheet “Database”. It is a good practice to create a backup for the database sheet. This will help you to recover a corrupt xlsx sheet.
Author Introduction:
Nick Vipond is a data recovery expert in DataNumen, Inc., which is the world leader in data recovery technologies, including corrupt word and outlook recovery software products. For more information visit www.datanumen.com.



