Io solitamente metto qui gli esercizi che svolgo e, in caso, chiedo su come implementarlo e renderlo più efficiente.
Ma se sbaglio sezione ditelo pure. 
Io comunque l'ho risolto così.
Private Type Alunni
Nome As String
Cognome As String
Voto As Integer
End Type
Dim ArrayAlunni() As Alunni
Dim N As Integer
Dim ContFlexGrid As Integer
Dim i As Integer
Private Sub Form_Load()
i = 1
ContFlexGrid = 1
grdRecupero.Cols = 2
grdRecupero.Col = 0
grdRecupero.Row = 0
grdRecupero.Text = "Nome"
grdRecupero.Col = 1
grdRecupero.Row = 0
grdRecupero.Text = "Cognome"
btnInserisci.Enabled = False
btnCalcola.Enabled = False
End Sub
Private Sub btnConferma_Click()
N = Val(txtAlunni.Text)
ReDim ArrayAlunni(1 To N) As Alunni
grdRecupero.Rows = N + 1
btnConferma.Enabled = False
txtAlunni.Enabled = False
btnInserisci.Enabled = True
txtNome.SetFocus
End Sub
Private Sub btnInserisci_Click()
If txtVoto.Text > 10 Then
MsgBox "Valore non Accettabile"
Exit Sub
End If
ArrayAlunni(i).Nome = txtNome.Text
ArrayAlunni(i).Cognome = txtCognome.Text
ArrayAlunni(i).Voto = Val(txtVoto.Text)
i = i + 1
txtNome.Text = ""
txtCognome.Text = ""
txtVoto.Text = ""
txtNome.SetFocus
If i > N Then
btnInserisci.Enabled = False
txtNome.Text = ""
txtNome.Enabled = False
txtCognome.Text = ""
txtCognome.Enabled = False
txtVoto.Text = ""
txtVoto.Enabled = False
btnCalcola.Enabled = True
Exit Sub
End If
End Sub
Private Sub btnCalcola_Click()
For i = 1 To N
If ArrayAlunni(i).Voto < 6 Then
grdRecupero.Col = 0
grdRecupero.Text = ArrayAlunni(i).Nome
grdRecupero.Col = 1
grdRecupero.Text = ArrayAlunni(i).Cognome
ContFlexGrid = ContFlexGrid + 1
grdRecupero.Row = ContFlexGrid
End If
Next i
End Sub
Private Sub btnFine_Click()
Unload Me
End Sub