A continuación vamos a ver un programa en Excel VBA que divide una cantidad de dinero en billetes y monedas.

Situación:

Bills and Coins in Excel VBA

Crear un evento de cambio de hoja de cálculo. Código añadido al evento de cambio de hoja de trabajo será ejecutado por Excel VBA cuando se cambia una celda en una hoja de cálculo.

  1. Abra el Editor de Visual Basic.

  2. Haga doble clic en Hoja1 (Sheet1) en el Explorador de proyectos.

  3. Seleccione la hoja de trabajo de la lista desplegable izquierda. Elija el Cambio de la lista desplegable de la derecha.

Worksheet Change Event in Excel VBA

Añadir las siguientes líneas de código en el evento de cambio de hoja de cálculo:

  1. Declarar una variable llamada cantidad de tipo doble y una variable i de tipo entero.

Dim amount As Double, i As Integer
  1. La hoja de evento de cambio de escucha a todos los cambios en la Hoja 1. Sólo queremos Excel VBA para hacer algo si algo cambia en la celda B2. Para lograr esto, añada la siguiente línea de código:

If Target.Address = "$B$2" Then
  1. inicializar la cantidad variable con el valor de la celda B2.

amount = Range("B2").Value
  1. Nos vaciamos la gama con las frecuencias.

Range("B5:B16").Value = ""
  1. Ahora es el momento de dividir la cantidad de dinero introducida. Empezamos un bucle For Next.

For i = 5 To 16
  1. Vamos a hacer uso de la estructura de bucle Do While. Código que se coloca entre estas palabras se repite mientras la parte que sigue hace mientras que es cierto. Queremos Excel VBA para repetir las líneas de código en la etapa 10, siempre y cuando la cantidad es mayor o igual a las células (i, 1) .value.

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

Loop
  1. Añadir las siguientes líneas de código en el bucle Do While.

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

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

Explicación: el tiempo que cantidad es mayor o igual a las células (i, 1) .value, la cantidad contiene billetes / monedas de este valor. Como resultado, Excel VBA incrementa la frecuencia de esta factura / moneda (primera línea) y resta el valor de la cuenta / moneda de cantidad (segunda línea). Este proceso se repetirá hasta que cantidad se hace más pequeño que las células (i, 1) .value. A continuación, incrementos de Excel VBA i y va a la siguiente factura / moneda al aire para ver cuántas veces este proyecto de ley / ataques de monedas en la cantidad que queda. De esta manera la cantidad de dinero será dividido en billetes y monedas hasta que no queda dinero para dividir más.

  1. Cierre el bucle For Next y no se olvide de cerrar la instrucción if (ambos fuera del Do While Loop).

Next i

End if

Prueba 12. El programa.

Resultado:

Bills and Coins Result

Nota: por supuesto la cantidad introducida no necesariamente contiene cada cuenta / moneda. Si la cantidad no contiene un proyecto de ley determinado / de la moneda, la parte que sigue hace mientras que nunca llega a ser verdad para este proyecto de ley / de la moneda y Excel VBA va directamente a la siguiente factura / moneda.