ARRAIGOS PARA EL DESAYUNO (2DA PARTE).

Lo prometido es deuda dicen por ahí, así que acabare por mostrarles como quedo mi libro de desayunos usando arraigos como valores.

Si no has visto la entrada anterior puedes revisarla aquí.

Al final el libro quedo algo así (con un gran sol iniciador de macros para sentirme mañanero jejeje).

Use una UserForm simple para calcular el desayuno. Esta misma afecta a las celdas de porciones y puedes ver su código completo abajo.

Para la caja contador de numeros

Private Sub Cfrutas_Change()

On Error Resume Next

i = 1

    For i = 1 To rng

        If Cells(i + 2, 2).Value = frutas.Value Then Cells(i + 2, 5).Value = Cfrutas.Value

    Next i

End Sub

Para el controlador de numeros

Private Sub ctrln_Change()

On Error Resume Next

Cfrutas.Value = ctrln.Value

Dim suma As Integer

suma = Application.WorksheetFunction.Sum(Range("F3:F1000000"))

    If suma < 500 * 0.9 Then Resultado.Value = "Echale mas"

    If suma >= 500 * 0.9 And suma <= 5000 * 1.1 Then Resultado.Value = "Perfecto!"

    If suma > 500 * 1.1 Then Resultado.Value = "Ya te pasaste!"

End Sub

Para el cuadro de lista de frutas

Private Sub frutas_Click()

ctrln.Value = 0

End Sub

Para iniciar la UserForm

Private Sub UserForm_initialize()

Range("E3:E1000000").ClearContents

frutas.Value = ""

Me.frutas.List = MiDesayuno2()

With UserForm1

    .StartUpPosition = 0

    .Left = 100

    .Top = 200

End With

End Sub

Podemos apreciar que estamos declarando algunas variables que no están declaradas dentro del código, esto se debe a que en un inicio esas variables fueron declaradas en un módulo aparte como públicas, por lo cual pueden ser usadas dentro de cualquier ámbito de VBA. Ese modulo es el que controla toda la aparición de la macro y puedes verlo aquí abajo.

Public MiDesayuno2() As Variant

Public rng, i, seleccion As Integer

Sub arraigo_desayuno_2()

    Worksheets(1).Activate

    rng = WorksheetFunction.CountA(Range("B3:B1000000"))

    ReDim MiDesayuno2(rng) As Variant

        For i = 1 To rng

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

        Next i

    MiDesayuno2(0) = "Escoger una fruta"

    UserForm1.Show

End Sub

Al ser variables Public, son reconocidas por todo el ámbito, por lo cual primero se ejecutará nuestro arraigo y luego la UserForm. Adicional, vemos que existe la línea

MiDesayuno2(0) = "Escoger una fruta"

Esto es gracias a que los arraigos muestran un valor 0 por default, con el cual podemos jugar para distintos casos.

¡Ahora solo tendré que escoger la fruta y saber que tan bien estoy desayunando! La técnica podría resultar una payasada (¿Mi desayuno? ¿en serio?) pero es efectiva y útil para muchas situaciones, por lo que te invito a descargar el libro y hacer tus propias modificaciones.

Gracias por compartir esto y cualquier duda nos leemos abajo.

ARRAIGOS PARA EL DESAYUNO (2DA PARTE).

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Scroll hacia arriba