Billetes y monedas en Excel VBA
A continuación veremos un programa en Excel VBA que divide una cantidad de dinero en billetes y monedas.
Situación:
Crear un evento de cambio de hoja de trabajo. El código agregado al evento de cambio de la hoja de trabajo será ejecutado por Excel VBA cuando cambie una celda en una hoja de trabajo.
1. Abra el Editor de Visual Basic.
2. Haga doble clic en Sheet1 (Sheet1) en el Explorador de proyectos.
3. Elija la hoja de trabajo de la lista desplegable de la izquierda. Elija Cambiar en la lista desplegable de la derecha.
Agregue las siguientes líneas de código al evento de cambio de hoja de trabajo:
4. Declare una variable llamada cantidad de tipo Double y una variable i de tipo Integer.
5. El evento de cambio de la hoja de trabajo escucha todos los cambios en la Hoja1. Solo queremos que Excel VBA haga algo si algo cambia en la celda B2. Para lograr esto, agregue la siguiente línea de código:
6. Inicializamos la cantidad variable con el valor de la celda B2.
7. Vaciamos el rango con las frecuencias.
8. Ahora es el momento de dividir la cantidad de dinero ingresada. Comenzamos un bucle For Next.
9. Haremos uso de la estructura Do While Loop. El código colocado entre estas palabras se repetirá siempre que la parte posterior a Do While sea verdadera. Queremos que Excel VBA repita las líneas de código en el paso 10 siempre que la cantidad sea mayor o igual al valor de Celdas (i, 1).
Loop
10. Agregue las siguientes líneas de código a Do While Loop.
amount = amount - Cells(i, 1).Value
Explicación: siempre que la cantidad sea mayor o igual a Cells (i, 1) .value, la cantidad contiene billetes / monedas de este valor. Como resultado, Excel VBA incrementa la frecuencia de este billete / moneda (primera línea) y resta el valor del billete / moneda de la cantidad (segunda línea). Este proceso se repetirá hasta que la cantidad sea más pequeña que las Células (i, 1) .valor. A continuación, Excel VBA incrementa i y pasa a la siguiente factura / moneda para ver cuántas veces se ajusta esta factura / moneda en la cantidad restante. De esta manera, la cantidad de dinero se dividirá en billetes y monedas hasta que no haya más dinero para dividir más.
11. Cierre el bucle For Next y no olvide cerrar la instrucción if (ambas fuera del bucle "While").
End if
12. Probar el programa.
Resultado:
Nota: por supuesto, la cantidad ingresada no necesariamente contiene cada billete / moneda. Si la cantidad no contiene una determinada factura / moneda, la parte después de Do While nunca se cumple para esta factura / moneda y Excel VBA va directamente a la siguiente factura / moneda.