La verdad es que no entiendo muy bien ese código, ya que me parece que en cada vuelta del bucle se reescriben la variables y siempre con el mismo valor.
Si lo que pretendes es que la variable 1 tenga el valor correspondiente del campo 1, la 2 el del 2, ... debrías hacer esto si no me equivoco.
Código:
<%
dim i, numero, var()
numero = 4
for i = 1 to numero
if i=1 then
Redim var(i)
else
Redim Preserve var(i)
end if
var(i) = request.form("var"&i)
next
%>
De esta manera defines la matriz var() sin una longitud determinada y si quieres cambiar dinámicamente el valor de numero, no habrá problemas, porque en cada vuelta la matriz se redimensionará conservando los valores anteriores.
Prueba después a escribir los valores de las variables para comprobar qeu se han recogido los datos correctamente.
Código:
<%
for i=1 to numero
Response.Write(var(i)&"<br>")
next
%>
Sobre lo de los tipos, es posible que con Request.Form estés recogiendo datos tipo texto, aunque sean números, y lo intente guardar en la variable var que es de tipo numérico:
Prueba entonces esto:
Código:
var(i) = CSng(Request.Form("var"&i))
Un saludo.