ARRAIGOS EN VBA EXCEL (INTRODUCCION CON MI DESAYUNO)

Estos días he tenido una carga importante de trabajo (¡yey, dinero!) y mis porciones de desayuno han bajado a comparación de mi necesidad de comer calorías (papiiiitas). Combinando una breve reseña de que frutas comer con la opción de como enseñar variables con arraigos a mis alumnos de Excel ha nacido para mí una revelación.

Para Excel, un arraigo es una variable que tiene múltiples opciones entre las cuales escoger (como yo y mi desayuno) todas ellas depositadas dentro del mismo nombre y solo identificadas por un numero de índice.

La nomenclatura es: MiVariable(n)

Donde MiVariables es una variable a nuestra elección y n es el número de opciones depositada en la variable.

Sabiendo que tengo 6 opciones para escoger, voy a crear una variable con un arraigo de 6 en mi código de VBA, el cual queda así.

Sub arraigo_desayuno()
 Dim MiDesayuno(6) As Variant
 End Sub

Nota que he designado que la variable sea del tipo Variant, esto porque un arraigo no puede ser del tipo String (o texto) y para dar mayor flexibilidad ya que Variant conlleva distintos tipos de datos.

Sub arraigo_desayuno()

Dim MiDesayuno(6) As Variant

    MiDesayuno(1) = Worksheets("Desayuno").Range("B3").Value

    MiDesayuno(2) = Worksheets("Desayuno").Range("B4").Value

    MiDesayuno(3) = Worksheets("Desayuno").Range("B5").Value

    MiDesayuno(4) = Worksheets("Desayuno").Range("B6").Value

    MiDesayuno(5) = Worksheets("Desayuno").Range("B7").Value

    MiDesayuno(6) = Worksheets("Desayuno").Range("B8").Value

End Sub

Ahora, con el código de arriba estoy designando un valor a cada uno de mis arraigos, esto lo hare porque el siguiente paso será escoger una fruta mediante una inputbox y comprobar que funciona con un msgbox que me dirá que fruta escogí.

Sub arraigo_desayuno()

Dim MiDesayuno(6) As Variant

Dim seleccion As Integer

    MiDesayuno(1) = Worksheets("Desayuno").Range("B3").Value

    MiDesayuno(2) = Worksheets("Desayuno").Range("B4").Value

    MiDesayuno(3) = Worksheets("Desayuno").Range("B5").Value

    MiDesayuno(4) = Worksheets("Desayuno").Range("B6").Value

    MiDesayuno(5) = Worksheets("Desayuno").Range("B7").Value

    MiDesayuno(6) = Worksheets("Desayuno").Range("B8").Value

seleccion = InputBox("Seleccionar numero de fruta", "mi desayuno")

MsgBox "usted a seleccionado " & MiDesayuno(seleccion), vbOKOnly, "Que escogi"

End Sub

¡Listo! Mi arraigo funciona a la perfección, con lo que me he ahorrado un sinfín de if´s y msgbox, pero aun lo podría hacer mejor. Si en lugar de designar por default un valor a mi arraigo lo quiero hacer mas inteligente puedo usar el siguiente código.

Sub arraigo_desayuno_2()

Dim MiDesayuno2() As Variant

Dim rng, i As Integer

    Worksheets("desayuno").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

End Sub

Nota como al principio solo le declaro el paréntesis () sin ningún valor y después usando la función ReDim vuelo a actualizar la variable para designarle el largo del numero de elementos, así si tengo más o menos fruta podre tener una selección mejor sin necesidad de volver a definir el largo de mi arraigo.

Sub arraigo_desayuno_2()

Dim MiDesayuno2() As Variant

Dim rng, i, seleccion As Integer

    Worksheets("desayuno").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

seleccion = InputBox("Seleccionar numero de fruta", "mi desayuno")

MsgBox "usted a seleccionado " & MiDesayuno2(seleccion), vbOKOnly, "Que escogi"

End Sub

¡Los arraigos son las cosas mas CUTE que encontraras con el manejo de VBA! Son fáciles y extremadamente dinámicos. Mi ejercicio es mucho mas largo que eso, pero se los enseño luego que me tengo que seguir apurando que papi necesita zapatos nuevos (ojos de $$$ aquí).

Comparte tu experiencia y cualquier duda ya sabes, caja de comentarios.

ARRAIGOS EN VBA EXCEL (INTRODUCCION CON MI DESAYUNO)
Scroll hacia arriba