macro en Excel

15/07/2003 - 16:45 por Henry borrero farias | Informe spam
Tengo la siguiente macro
Sub Prueba ()
For i=1 to 5 step 0.1
suma = suma + i
next
msgbox suma
end

El problema consiste en que cuando corro la macro con
valores enteros menores que 5 las sumas no me incluyen el
valor final(sumando) 2,3 y 4 asi:
La suma de 1 hasta 2 da 14.5 y no 16.5 faltando el 2 y asi
para el tres (da 39 y no 42) y el cuatro (da 73.5 y no
77.5), a partir del 5 (da 123 como debe ser) ya suma el
valor final.
¿Sera esto un error? ¿o que tiene la macro?

Preguntas similare

Leer las respuestas

#1 Carlos Antonio
16/07/2003 - 06:30 | Informe spam
Prueba a ver si te funciona con un Do-Loop:
Sub Prueba()
Dim X as Double, Suma as Double
X = 1
Do
suma = suma + X
X = X + 0.1
Loop until x = 5
End Sub

"Henry borrero farias" wrote in message
news:009701c34adf$c0bf70c0$
Tengo la siguiente macro
Sub Prueba ()
For i=1 to 5 step 0.1
suma = suma + i
next
msgbox suma
end

El problema consiste en que cuando corro la macro con
valores enteros menores que 5 las sumas no me incluyen el
valor final(sumando) 2,3 y 4 asi:
La suma de 1 hasta 2 da 14.5 y no 16.5 faltando el 2 y asi
para el tres (da 39 y no 42) y el cuatro (da 73.5 y no
77.5), a partir del 5 (da 123 como debe ser) ya suma el
valor final.
¿Sera esto un error? ¿o que tiene la macro?
#2 Héctor Miguel
16/07/2003 - 09:07 | Informe spam
¿Que tal, chicos?

==> El "problema" (real) parece estar relacionado con el tipo de datos de la variable para el contador y el "Step" NO-entero :((
Al no asignarse un tipo de datos especifico para la variable "i", SE ASUME el tipo de datos "Variant" =>"debiera"
funcionar< Al establecer un "Step" NO-entero (0.1) el ciclo se detendra cuando alcance un contador <= (menor o igual) que el "Fin"
El numero de veces que debiera repetirse el ciclo es: =(Fin-Inicio)/Step+1
(Por alguna razon) el ciclo "se esta deteniendo" PRECISAMENTE UN PASO ANTES "de llegar" al "Fin". :((
Asignar a la variable "i" un tipo de datos Single o Double "debiera corregir" ese ligero fallo ("bug"? -o- "conflicto" de
tipos?)
... sin embargo, todavia "presento" algunos ligeros "titubeos" (unas veces funciona y otras veces no) :((
La solucion que encontre es "convertir" un tipo de datos "Variant" a un tipo de datos "Decimal" (dentro del ciclo) +/- como
sigue:

Perdon, pero... (a mí) me resultan confusas las variables de una sola letra :(( ==Sub Acumula()
Dim Siguiente As Variant
For Siguiente = 1 To 2 Step 0.1
Siguiente = CDec(Siguiente)
Acumulado = Acumulado + Siguiente
Next
MsgBox Acumulado
End Sub
_______
Saludos,
Héctor.
MS-MVP

Mostrar la cita
[...]
Mostrar la cita
#3 Carlos Antonio
16/07/2003 - 14:13 | Informe spam
ah! Acabo de fijarme que la última línea debe leer asi:

Loop until X > 5

Saludos,

Carlos Antonio


"Carlos Antonio" <carlos_arroba_bmjfoodspr.com> wrote in message
news:#
Mostrar la cita
Ads by Google
Search Busqueda sugerida