Hola:
El error este es lógico que se te produzca ya que si analizas la rutina verás que:
AddGrid grd, 1, 0, Text1
AddGrid grd, 1, 1, Text2
AddGrid grd, 1, 2, Text3
AddGrid grd, 1, 3, Text4
AddGrid grd, 1, 4, Text5
Estas instrucciones SIEMPRE envian el dato a la fila 1 ya que tu le debes indicar en que fila debe añadir el dato por tanto necesitas un contador para saber en que fila debe ponerlos.
Supongo que después harás algo con los datos, guardarlos en un archivo, volverlos a cargar posteriormente desde un archivo, etc., de ahí que la utilidad de la rutina es precisamente porque el programador determina donde deben ir los datos y no el programa.
Podrías utilizar la propiedad grd.Rows para saber cual es la última pero tendrás el mismo problema que tenías con el AddItem
AddGrid grd, grd.Rows, 0, Text1
Posibilidades hay muchas, se podría incluso modificar la función de tal manera que al enviarle por ejemplo Fila = -1, la misma averiguara cual es la Fila que debe ocupar, basándose en alguna comparacion de datos en Blanco, suponiendo ello que el programa tiene una verificación por ejemplo que no permita introducir el código en blanco.
En este caso concreto, la solucion es muy facil, pero piensa en todo lo que te he comentado anteriormente:
Código vb:
Ver originalPrivate Sub cmd_agre_Click()
Static Fila As Single
Fila = Fila + 1
AddGrid grd, Fila, 0, Text1
AddGrid grd, Fila, 1, Text2
AddGrid grd, Fila, 2, Text3
AddGrid grd, Fila, 3, Text4
AddGrid grd, Fila, 4, Text5
End Sub
Saludos