Muy buenas.
Lo primero de todo, si el número de filas es 19 el índice de la colección sólo puede llegar hasta el 18, ya que empieza con índice 0.
Si siempre vas a obtener 19 registros pones:
Si puede que se obtenga otro número de registros lo mejor es que pongas siempre:
Código vb:
Ver originalFor d = 4 To dt.Rows.Count - 1
...
Next
Por último, en el código que tenías antes, en cada vuelta del bucle buscabas el control, que me imagino sería un textbox, pero no verificabas si realmente existía además que con ToString() no le estás dando valor a la propiedad Text. Yo te recomiendo lo siguiente (fíjate también que tienes que ir cambiando el índice de la fila en la que estás, ya que si no siempre vas a asignar el mismo valor):
Código vb:
Ver originalFor d = 4 To dt.Rows.Count - 1
NombreControl = "txt_Pregunta" & d & "_1"
If Not Me.FindControl(NombreControl) Is Nothing Then
CType(Me.FindControl(NombreControl), TextBox).Text = dt.Rows(d)("NumAnimal")
End If
Next
Un saludo.