The following code requires two list boxes, two text boxes, and two command buttons.
Control names --> lstNames, lstScores, txtName, txtScore, command1, cmdSaveData

Option Explicit
Const MAX_NAMES As Integer = 10
Const MAX_TESTS As Integer = 10
Private names(MAX_NAMES) As String
Private scores(MAX_NAMES, MAX_TESTS) As Integer
Private nameCount As Integer
Private testCount As Integer
Private Sub cmdSaveData_Click()
Dim colIndex As Integer
Dim rowIndex As Integer
Dim fileName As String
fileName = App.Path & "\" & "grades.txt"
Open fileName For Output As #1
Write #1, testCount
For rowIndex = 1 To nameCount
Write #1, names(rowIndex)
For colIndex = 1 To testCount
Write #1, scores(rowIndex, colIndex)
Next colIndex
Next rowIndex
Close #1
End Sub
Private Sub Command1_Click()
Dim scoreIndex As Integer
Dim fileName As String
fileName = App.Path & "\" & "grades.txt"
Open fileName For Input As #1
Input #1, testCount
nameCount = 0
lstNames.Clear
Do Until EOF(1)
nameCount = nameCount + 1
Input #1, names(nameCount)
lstNames.AddItem names(nameCount)
For scoreIndex = 1 To testCount
Input #1, scores(nameCount, scoreIndex)
Next scoreIndex
Loop
Close #1
printData nameCount, testCount
End Sub
Private Sub printData(ByVal studentCount As Integer, _
ByVal numberOfTests As Integer)
Dim nameIndex As Integer
Dim testIndex As Integer
For nameIndex = 1 To studentCount
Print names(nameIndex);
For testIndex = 1 To numberOfTests
Print scores(nameIndex, testIndex); " ";
Next testIndex
Print
Next nameIndex
End Sub
Private Sub lstNames_Click()
Dim selectedItem As Integer
Dim testIndex As Integer
If lstNames.ListIndex = -1 Then
MsgBox "No name selected"
Else
selectedItem = lstNames.ListIndex
txtName.Text = lstNames.List(selectedItem)
lstScores.Clear
For testIndex = 1 To testCount
lstScores.AddItem Str(scores(selectedItem + 1, testIndex))
Next testIndex
End If
End Sub
Private Sub lstScores_Click()
If lstScores.ListIndex = -1 Then
MsgBox "No score selected"
Else
txtScore.Text = lstScores.List(lstScores.ListIndex)
End If
End Sub
Private Sub txtScore_Change()
lstScores.List(lstScores.ListIndex) = txtScore.Text
scores(lstNames.ListIndex + 1, lstScores.ListIndex + 1) = _
Val(txtScore.Text)
End Sub