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 cálculo. El código agregado al Evento de Cambio de 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 la Hoja 1 (Sheet1) en el Explorador del Proyecto.
3. Elija Hoja de cálculo de la lista desplegable de la izquierda. 4. Selecciona Cambiar en la lista desplegable de la derecha.
Añade las siguientes líneas de código al Evento de Cambio de la Hoja de Trabajo:
4. Declare una variable llamada cantidad de tipo Doble y una variable i de tipo Entero.
Diminuta cantidad como doble, i como entero
5. El Evento de Cambio de la Hoja de Trabajo escucha todos los cambios en la Hoja1. Sólo queremos que Excel VBA haga algo si algo cambia en la celda B2. Para conseguirlo, añade la siguiente línea de código:
Si la dirección del objetivo es «$B$2» entonces
6. Inicializamos la cantidad variable con el valor de la celda B2.
cantidad = Rango («B2»).Valor
7. Vaciamos el rango con las frecuencias.
Rango(«B5:B16»).Valor = «»
8. Ahora es el momento de dividir la cantidad de dinero introducida. Empezamos un bucle de For Next.
Para i = 5 a 16
9. Utilizaremos la estructura del bucle Do While. El código colocado entre estas palabras se repetirá siempre y cuando la parte después del Do While sea verdadera. Queremos que el Excel VBA repita las líneas de código en el paso 10 siempre y cuando la cantidad sea mayor o igual al valor de Cells(i,1).value.
Cantidad de Do While = Células(i, 1).Valor Bucle
10. Añade las siguientes líneas de código al bucle «Do While».
Células(i, 2).Valor = Células(i, 2).Valor + 1 cantidad = cantidad – Células(i, 1).Valor
Explicación: mientras que la cantidad sea mayor o igual al valor de las células(i,1).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 el importe sea menor que Cells(i,1).value. A continuación, Excel VBA incrementa i y pasa al siguiente billete/moneda para ver cuántas veces este billete/moneda cabe en la cantidad que queda. De esta manera la cantidad de dinero se dividirá en billetes y monedas hasta que ya no quede dinero para dividir.
11. Cierra el bucle For Next y no olvides cerrar el enunciado if (ambos fuera del bucle Do While).
Siguiente… Termina si
12. Pruebe el programa.
Resultado:
Nota: por supuesto la cantidad introducida no necesariamente contiene cada billete/moneda. Si la cantidad no contiene un determinado billete/moneda, la parte después del «Do While» nunca se cumple para este billete/moneda y el VBA de Excel va directamente al siguiente billete/moneda.