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 SubPodemos 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 SubAl 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.
