Hola @Yoshi, espero te encuentres bien.
Entiendo que originalmente, era un loop sencillo que continuaba mientras list_item fuera menor o igual a folios_a_procesar, pero lo que ahora quieres agregar es una condición de corte para que cuando list_item llegue a 41, el loop se detenga. ¿Es correcto?
En ese caso, debemos cambiar el operador OR por AND:
( list_item <= folios_a_procesar && list_item < 41 )
(en caso que quieras que el bucle también incluya el valor 41, cambiar ese útlimo < por <=)
A continuación aclaro por qué. Teniendo 2 condiciones:
(A) list_item <= folios_a_procesar
(B) list_item < 41
Imaginemos los siguientes valores:
folios_a_procesar = 100
list_item = 50
En este ejemplo, A = verdadera y B = falsa.
Como el operador OR resulta en verdadero si al menos 1 de las 2 condiciones es verdadera, la condición entera evaluará como YES (true), y el bucle continuará.
En cambio, con el operador AND todas las condiciones deben ser verdaderas para que la condición evalúe a YES (true). Es decir que el If…then evaluará a NO (false), y el bucle se interrumpirá.
Espero que esta respuesta haya sido útil, y que no haya resultado redundante o excesiva. Si entendí mal la lógica detrás de tu condición If…then, y por ende mi solución no te serviría, te solicito que por favor nos comentes en mayor detalle el objetivo de esa condición (cuándo debería cortar y cuándo debería seguir), idealmente con algún pequeño ejemplo, para poder proveer una mejor.
¡Saludos!