A continuación, veremos un programa en Excel VBA que divide una cantidad de dinero en billetes y monedas .

Situación:

Billetes y monedas en Excel VBA

Cree un evento de cambio de hoja de trabajo. Excel VBA ejecutará el código agregado al evento de cambio de hoja de trabajo 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 Hoja de trabajo en la lista desplegable de la izquierda. Elija Cambiar en la lista desplegable de la derecha.

Evento de cambio de hoja de trabajo en Excel VBA

Agregue las siguientes líneas de código al evento de cambio de la hoja de trabajo:

4. Declare una variable llamada cantidad de tipo Double y una variable i de tipo Integer.

Dim amount As Double, i As Integer

5. El evento de cambio de hoja de trabajo escucha todos los cambios en Sheet1. 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:

If Target.Address = "$B$2" Then

6. Inicializamos la variable cantidad con el valor de la celda B2.

amount = Range("B2").Value

7. Vaciamos el rango con las frecuencias.

Range("B5:B16").Value = ""

8. Ahora es el momento de dividir la cantidad de dinero ingresada. Comenzamos un ciclo For Next.

For i = 5 To 16

9. Usaremos 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 a Cells (i, 1) .value.

Do While amount >= Cells(i, 1).Value

Loop

Loop

10. Agregue las siguientes líneas de código al bucle Do While.

Cells(i, 2).Value = Cells(i, 2).Value + 1
amount = amount - Cells(i, 1).Value

Explicación: siempre que la cantidad sea mayor o igual al valor de las celdas (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 la cantidad sea menor que Cells (i, 1) .value. A continuación, Excel VBA incrementa iy pasa al siguiente billete / moneda para ver cuántas veces este billete / moneda cabe en la cantidad restante. De esta manera, la cantidad de dinero se dividirá en billetes y monedas hasta que ya no quede dinero para dividir.

11. Cierre el ciclo For Next y no olvide cerrar la instrucción if (ambas fuera del ciclo Do While).  

   Next i
End if

12. Pruebe el programa.

Resultado:

Resultado de billetes y monedas

Nota: por supuesto, la cantidad ingresada no necesariamente contiene todos los billetes / monedas. Si la cantidad no contiene un determinado billete / moneda, la parte posterior a Do While nunca se vuelve verdadera para este billete / moneda y Excel VBA pasa directamente al siguiente billete / moneda.

5/6 ¡Completado! Aprenda mucho más sobre eventos>
Siguiente capítulo: Matriz