Excel se bloquea al ejecutar este simple programa
Soy totalmente newbie con VBA. He escrito este programa, y cada vez que lo ejecuto Excel se bloquea. Lo he analizado por todos lados y no sé qué está mal. Agradecería enormemente cualquier ayuda que podáis darme.
Básicamente quiero hacer lo siguiente. Quiero que el programa recorra una columna comprobando el valor de cada celda. Si el valor de la celda coincide con uno determinado, quiero que coja el valor de otra celda de la misma fila, y lo almacene en un sumatorio.
Una vez que termina de recorrer la columna, el programa devuelve el valor del sumatorio.
Aquí está el código:
Sub Mondays()
Sheets("Hoja1").Select
Dim m As Integer
Dim fila As Byte
fila = 1
m = 0
Do
If (Cells(fila, 2).Value = "Monday") Then
m = m + Cells(fila, 8).Value
fila = fila + 1
End If
Loop Until Cells(fila, 1).Value = Range("A24")
Range("J3").Value = m
End Sub
Andy, no son 24 filas, sino el contenido de la celda A24...Salu2 - Anónimo
El contenido de A24 = al contenido de A24? Si, obvio. El contenido de cualquier celda es igual a si mismo, es imposible que sea diferente. Cells(24,1) es lo mismo que Range("A24") solo que escrito diferente - Andy Machin
Si fila empieza en 1 y aumenta. Fila en algún momento sera 2,3,4,5... sera 24, sera 100, sera 1000000 pero el problema es que nunca podrá superar 24, porque cuando sea 24 evaluara si A24 = A24 y eso siempre es TRUE, así que el loop termina - Andy Machin
Pero es que vos estás diciendo que son 24 iteraciones. No entiendo de donde sacás eso...tranquilamente A24 puede tener el valor 100, 1000 o incluso -1, nunca dice cuanto vale la celda A24 - Anónimo
Pero es que vos estás diciendo que son 24 iteraciones. No entiendo de donde sacás eso...tranquilamente A24 puede tener el valor 100, 1000 o incluso -1, nunca dice cuanto vale la celda A24 - Anónimo
Jajajaja no importa que diga A24, como si no dice nada, A24 es igual a A24 si o si. Su bucle dice Loop Until Cells(fila, 1) = Range("A24"). No se de que otra manera explicarlo. Cuando fila valga 24. La evaluavion sera Cells(24,1) = Range("A24") no importa cual sea el valor - Andy Machin
Y yo no dije que son 24. Dije que no son MÁS de 24. Pueden ser 24 o menos, pero nunca más de 24. Y saber ese dato, lo hace un bucle definido. Lo correcto es For fila = 1 to 24. Si la condicion se cumple antes de llegar a 24 entonces Exit for - Andy Machin
De todas formas eso fue solo una sugerencia a parte. Si no la quiere tomar no la toma y listo. La pregunta principal fue respondida. - Andy Machin