ciclo for anidado en while

3 envíos / 0 nuevos
Último envío
stifftico97
Imagen de stifftico97
Offline
última acción: Hace 7 años 3 meses
alta: 30/11/2016 - 15:40
Puntos: 160
ciclo for anidado en while

tengo este codigo la idea es que cuando los dos dias sean iguales me sume 300 porque ese es el monto de alquiler y el cilo solo va a entar cuando los dos dias sean iguales me hace la suma y lla guarda en un variable va asalir del ciclo cuando este se repita n cantidad de veces en este caso 12 

''' dia de pago dia que me paga alquiler

''dia de hoy '= hoy() y con una formula saco el dia 

Public sub acumulador()
Dim resultado as integer
Dim fecha-ingreso as Sting
Dim fecha-pago as string

dim meses_de_contrato as integer


Range("a1") = fecha-ingreso
Range("a2")= fecha-pago 
Range("a3") = meses_de_contrato ' ejemplo 12 meses entonces repitame el ciclo 12 veses 

White fecha-ingreso = fecha-pago ' solo una vez al mes se cumple esta condicion cuando los dias coincidan
Then
i=0 
For i + 300
Resultado= i 

next
End while

entoces lo que ocupo es q cuando fecha-ingreso = fecha-pago el ciclo se repita n (es una vaiable) cantidad de veces para que mes a mes me sume 300 y cuando se cumpla esa cantidad de veces de repeticion me manda un msg box terminado

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 5 horas 50 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Pero este código no puede

Pero este código no puede funcionar ¿no?

Hay varias cosas que me llaman la atención en este código que adjuntas

Como consejo, No utilices un guión medio en los nombres de tus variables para que no se confunda con una resta. utiliza mejor un guión bajo

¿por qué las variables para las fechas son de tipo texto y no de tipo fecha?

Dim fecha-ingreso as Sting
Dim fecha-pago as string

Otra pregunta: ¿quieres leer los datos de la hoja, o quieres establecer los valores desde la macro a la hoja?

Aquí lo que haces es establecer el valor de las celdas con lo que contenga la variable (que no tienen nada, a no ser que haya líneas del código que no hayas incluido aquí)

Range("a1") = fecha-ingreso
Range("a2")= fecha-pago 
Range("a3") = meses_de_contrato ' ejemplo 12 meses entonces repitame el ciclo 12 veses 

entiendo que esto de White es una errata

White fecha-ingreso = fecha-pago

en VBA, Then sólo puede ser parte de un IF, no puedes tenerlo sólo en una línea

Then

Los bucles For en VBA no se definen así

For i + 300

sería 

For i=1 to 300

dentro del bucle no haces nada, sólo sumar de uno en uno hasta 300

para eso puedes establecer el valor directamente y te ahorras el bucle (Resultado=300)

en VBA Para finalizar un bucle Do se emplea Loop, no End While

End while

 

 

 

------
Ya sé Excel, pero necesito más.

stifftico97
Imagen de stifftico97
Offline
última acción: Hace 7 años 3 meses
alta: 30/11/2016 - 15:40
Puntos: 160
gracias

I tienes razon soy nuevo en esto de VBA  y no me supe explicar bien  lo de las fechas como string es porque la fecha representa los dias es decir de 1 a 31  lo pense asi porque si pongo date tendria este formato DD/mes/año entonces las dos fechas nunca serian iguales 

Quiero leer los datos desde una hoja (estos datos serian  la fecha de pago , monto , y cuando finaliaza el contrato)

lo que intentaba hacer era basicamente sumar un monto mes a mes porque son alquileres y guardarlo en un varible

para que si el contrato dura  un año y paga el 10 de cada mes en ese dia me sume el monto de la variable 

 posdata : Este es mi primer programa 

Muchas gracias