macros - ayuda

Upload: jiancarlos-saul-chacchi-huaman

Post on 10-Oct-2015

76 views

Category:

Documents


0 download

DESCRIPTION

Ayuda para trabajar con macros en excel

TRANSCRIPT

  • 5/20/2018 Macros - Ayuda

    1/15

    Formulario VBA en Excel

    En esta ocasin haremos un ejemplo bsico de cmo utilizar un formulario VBApara desarrollar

    una mini-aplicacin en Excel que realice la conversin de temperaturas entre grados Celsius y

    grados Fahrenheit. Este ejemplo ser de gran ayuda para aquellos que comienzan en la

    programacin VBA.

    Creacin del formulario

    Es probable que hayas iniciado a programar en VBA pero an no hayas utilizado los formularios,

    as que ser conveniente dar una breve definicin antes de comenzar. Un formulario VBA es un

    cuadro de dilogo donde agregamos diversos tipos de controles como botones de comando, cajas

    de texto, casillas de verificacin, y otros controles ms que sern de utilidad para obtener

    informacin de un usuario ya sea para procesarla y devolver algn resultado o simplemente

    almacenarla.

    Los formularios nos permiten crear aplicaciones en Excel para extender el uso y funcionalidad de

    la herramienta y aunque su uso est fuertemente relacionado con los usuarios avanzados de Excel,

    pronto vers que no es tan complicado utilizarlos. Para iniciar nuestro ejemplo agregaremos un

    nuevo formulario de la siguiente manera. En la ficha Programador pulsa el botn Visual Basic y se

    mostrar el Editor de VBA. Haz clic derecho sobre VBA Project y selecciona la opcin Insertar >

    UserForm:

    De inmediato el panel principal mostrar el formulario recin creado as como un pequeo cuadro

    de dilogo con el ttulo Cuadro de herramientas el cual contiene los controles que podemos

    agregar al formulario.

  • 5/20/2018 Macros - Ayuda

    2/15

    El Cuadro de herramientas tiene un botn para cada tipo de control como etiqueta, cuadro de

    texto, cuadro combinado, cuadro de lista, casilla de verificacin, botn de opcin, etc. Para

    agregar un control al formulario es necesario hacer clic en el botn correspondiente dentro del

    Cuadro de herramientas y posteriormente hacer clic dentro del formulario. Otra manera de

    agregar un control al formulario es pulsar el botn del control y arrastrarlo sobre el formulario.

    Agregar controles de formulario

    Para nuestro ejemplo necesitamos agregar una etiqueta, un cuadro de texto, un cuadro de lista y

    un botn de comando de manera que nuestro formulario quede de la siguiente manera:

    Para cambiar el texto de la etiqueta y del botn de comando debemos modificar la propiedad

    llamada Captiony eso lo haremos desde la ventana Propiedades. Si esta ventana no se muestra

    actualmente en el Editor de Visual Basic puedes seleccionarla desde el men Ver o tambin

    puedes hacer clic derecho sobre alguno de los controles y seleccionar la opcin Propiedades lo

    cual mostrar la ventana:

  • 5/20/2018 Macros - Ayuda

    3/15

    Encuentra la propiedad Caption y al lado derecho ingresa el valor de dicha propiedad para el

    control seleccionado. En la imagen anterior estamos viendo las propiedades de la etiqueta llamada

    Label1y por lo tanto he colocado el texto Temperatura. Para hacer el cambio de esta propiedad

    para el botn de comando solo debes seleccionarlo de la lista desplegable que se encuentra en la

    parte superior de la misma ventana Propiedades. Al terminar el cambio de la propiedad Caption

    tendremos el formulario de la siguiente manera:

    En la imagen anterior puedes notar que tambin he cambiado en el ttulo del formulario y lo

    puedes hacer modificando tambin la propiedad Captiondel formulario mismo.

    Agregar opciones al cuadro de lista

    Un ltimo cambio que haremos a los controles es agregar los valores al cuadro de lista. Para

    nuestro ejemplo solo necesitamos los valores Celsius y Fahrenheit pero no existe una propiedad

    del control que nos permita hacerlo sino que debemos utilizar cdigo VBA. Para especificar estas

    opciones debemos hacer doble clic sobre el formulario y seleccionar el cdigo para el

    procedimiento Initializedonde colocaremos las instrucciones necesarias para agregar las opciones:

  • 5/20/2018 Macros - Ayuda

    4/15

    La instruccin AddItemes la que nos permite agregar un nuevo elemento al cuadro de lista y la

    instruccin ListIndexnos permite indicar el valor que estar seleccionado al cargarse el formulario

    y que ser la opcin Celsius ya que es la primera opcin de la lista y por lo tanto tiene asociado el

    ndice cero.

    Cdigo del botn de comando

    Finalmente agregaremos cdigo VBA al botn de comando que ser el encargado de hacer la

    conversin, solo haz doble clic sobre el botn para mostrar la ventana de cdigo asociada. Elcdigo que colocaremos en el procedimiento Click ser el siguiente:

    PrivateSubCommandButton1_Click()

    'Validar que se ha especificado una temperaturaIfTextBox1.Value = ""Then

    MsgBox "Debes especificar una temperatura"ExitSub

    EndIf

    'Si es Celsius convertir a FahrenheitIfComboBox1.ListIndex = 0 Then

    temperatura = TextBox1.Value * 1.8 + 32MsgBox temperatura & " Fahrenheit"

    'Si es Fahrenheit convertir a CelsiusElse

    temperatura = (TextBox1.Value - 32) * 5 / 9MsgBox temperatura & " Celsius"

    EndIf

    EndSub

    La primera validacin dentro del cdigo verifica que el cuadro de texto no est vaco en cuyo casodesplegar un mensaje solicitando ingresar una temperatura y posteriormente sale de la

    subrutina. La segunda validacin es para saber si el cuadro de lista tiene seleccionada la opcin

    Celsius y por lo tanto hacer la conversin a Fahrenheit para mostrar el resultado. Por el contrario,

    si el cuadro de lista tiene seleccionada la opcin Fahrenheit se har la conversin a Celsius. Para

    probar el funcionamiento de nuestro formulario es suficiente con pulsar el botn Ejecutar que se

    encuentra en la barra de herramientas Estndar:

  • 5/20/2018 Macros - Ayuda

    5/15

    Observa el comportamiento final del formulario:

    Ya que hemos terminado con la construccin del formulario y el cdigo necesario para su

    funcionamiento, podemos dar un paso adicional para llamar el formulario desde una hoja de

    Excel.

    Cargar formulario desde una hoja de Excel

    Para cargar un formulario desde una hoja de Excel ser suficiente con agregar un botn de

    comando ActiveX desde la ficha Programador:

    Al hacer doble clic sobre el botn se mostrar el cdigo asociado al evento Click del botn y

    debemos colocar una sola instruccin:

  • 5/20/2018 Macros - Ayuda

    6/15

    Con esto ser suficiente para que al momento de pulsar el botn de la hoja de Excel se muestre el

    formulario VBArecin creado y podamos realizar la conversin de temperaturas. Aunque este es

    un ejemplo muy sencillo espero que sea til para darte cuenta del gran potencial que existe en el

    uso de formularios en Excel.

    Al momento de guardar un archivo con macros debes hacer el siguiente procedimiento (Una de las

    formas)

    Debes de Guardar como: Libro de Excel habilitado para macros.

  • 5/20/2018 Macros - Ayuda

    7/15

    UN EJERCICIO DE MAYOR DIFICULTAD

    Necesitamos 8 Option Button (Botn de Opcin)

    3 labels

    2 cuadro de texto1 botn de comando (Convertir)

    Codificacin para el botn de comando (Convertir)

    =======================================================================================

    Sub CommandButton2_Click()Dim Temperatura As Double Declarando el tipo de dato de la Temperatura a ingresar

    If TextBox1.Text = Empty ThenMsgBox "Ingrese un valor" para cuando no exista valor en el cuadro de texto de temperaturaEnd If

    Temperatura = Val(TextBox1)'Mensajes para cuando no hay unidades especificadas

    If OptionButton1 = False And OptionButton2 = False And OptionButton3 = False And OptionButton4 = False Then

    HOJA DE EXCEL

    Formulario en VBA

  • 5/20/2018 Macros - Ayuda

    8/15

    MsgBox "Elija una opcin de entrada para su conversin"End If

    If OptionButton5 = False And OptionButton6 = False And OptionButton7 = False And OptionButton8 = False ThenMsgBox "Elija una opcin de salida para su conversin"End If

    'Mensaje para cuando se elije la misma unidad de entrada y de salida.

    If OptionButton1 And OptionButton5 = True ThenMsgBox "Misma unidad para entrada y salida. Cambie una de las unidades"End If

    If OptionButton2 And OptionButton6 = True ThenMsgBox "Misma unidad para entrada y salida. Cambie una de las unidades"End If

    If OptionButton3 And OptionButton7 = True Then

    MsgBox "Misma unidad para entrada y salida. Cambie una de las unidades"End If

    If OptionButton4 And OptionButton8 = True ThenMsgBox "Misma unidad para entrada y salida. Cambie una de las unidades"End If

    CALCULOS

    If OptionButton1 And OptionButton6 = True ThenResultado = Temperatura + 273End If

    If OptionButton1 And OptionButton7 = True ThenResultado = Temperatura * 9 / 5 + 32End If

    If OptionButton1 And OptionButton8 = True ThenResultado = (Temperatura + 273) * 9 / 5End If

    If OptionButton2 And OptionButton5 = True ThenResultado = Temperatura - 273End If

    If OptionButton2 And OptionButton7 = True ThenResultado = 9 / 5 * Temperatura - 459.67End If

    If OptionButton2 And OptionButton8 = True ThenResultado = Temperatura * 9 / 5End If

    If OptionButton3 And OptionButton5 = True ThenResultado = (Temperatura - 32) / 1.8End If

    If OptionButton3 And OptionButton6 = True ThenResultado = (Temperatura + 459.67) / 1.8

  • 5/20/2018 Macros - Ayuda

    9/15

    End If

    If OptionButton3 And OptionButton8 = True ThenResultado = Temperatura + 459.67End If

    If OptionButton4 And OptionButton5 = True Then

    Resultado = (Temperatura - 491.67) * 5 / 9End If

    If OptionButton4 And OptionButton6 = True ThenResultado = Temperatura * 5 / 9End If

    If OptionButton4 And OptionButton7 = True ThenResultado = Temperatura - 459.67End If

    TextBox2.Text = Resultado

    End SubOTRO EJERCICIO

    Codificacin para el botn Calcular.

    Private Sub CommandButton1_Click()Dim precioarroz As DoubleDim precioharina As DoubleDim descuentoarroz As DoubleDim descuentoharina As Double

    precioarroz = 20.5precioharina = 18.5descuentoarroz = 0.15descuentoharina = 0.25If OptionButton1.Value = False And OptionButton2.Value = False And Len(TextBox1.Text) = 0 ThenMsgBox "escoger un producto"ElseIf Len(TextBox1.Text) = 0 ThenMsgBox "coloque una cantidad"

    ElseIf OptionButton1.Value = True ThenTextBox2.Text = TextBox1.Text * precioarrozElse

  • 5/20/2018 Macros - Ayuda

    10/15

    TextBox2.Text = TextBox1.Text * precioharinaEnd IfIf OptionButton1.Value = True ThenTextBox3.Text = TextBox2.Text * descuentoarrozElseTextBox3.Text = TextBox2.Text * descuentoharinaEnd If

    TextBox4.Text = Val(TextBox2.Text) - Val(TextBox3.Text)End IfEnd IfEnd Sub

  • 5/20/2018 Macros - Ayuda

    11/15

    FUNCIN SELECT CASE

    La funcin Select Case se utiliza para evaluar una variable y realizar acciones dependiendo del

    valor de sta. La diferencia con la funcin If radica en el nmero de acciones a realizar luego de

    evaluar la variable. Mientras que en el Select Case se pueden realizar indeterminadas acciones, con

    la funcin IF, slo dos posibilidades (una accin si el resultado es verdadero y otra si es falso).

    A continuacin aplicaremos la funcin select case para el siguiente ejemplo:

    Paso 1: Vamos a crear una macro que contenga un formulario donde ingresaremos una hora del da(del 0 a 24) y nos arrojar en que horario del da nos encontramos (maana, tarde, noche y

    madrugada).

    Paso 2:Configurar la macro con la funcin Select Case para que ejecuten las acciones descritas enel Paso 1.

    Paso 3: Correr la macro y observar los resultados

    En este caso, si no se ingresa una hora del da correcta, aparecer un mensaje Hora no vlida

    como se puede observar en la imagen insertada.

  • 5/20/2018 Macros - Ayuda

    12/15

    Por otro lado, si ingresamos una hora comprendida entre las 0 y las 6 horas, aparecer

    Madrugada; entre las 7 y las 12 horas, Maana; entre las 13 y 18 horas, Tarde; y por ltimo,

    entre las 19 y 24, Noche.

    A continuacin, se presenta un ejemplo sobre lo comentado anteriormente:

    Ejercicio de repaso:

    Apl icando el procedimiento anterior, reali ce una apli cacin en la que te pida ingresar un nmerodel 1 al 12. Cuando escribas 1, debe mostrarse en un cuadro de texto. Enero, Si escribes 2 debesalir febrero y as hasta diciembre.

    APLICACIN DE FORNEXT

    El uso de esta estructura permite repetir un grupo de instrucciones un nmero de veces determinado.

    El bucle For hace uso de un contador cuyo valor se modifica desde el Vo hasta el Vf en una

    cantidad constante en cada repeticin.

    Sintaxis

    For contador = Vo To Vf [StepC]Donde:

    Contador: Variable numrica que sirve de control para el bucle.

    Vo: Valor inicial del contador.

    Vf: Valor final del contador.

    C: Incremento o decremento del contador en cada iteracin.Adicionalmente, se puede definir una variable Acumulador el cual cumple la funcin de almacenar

    resultados parciales obtenidos en cada repeticin.

  • 5/20/2018 Macros - Ayuda

    13/15

    A continuacin se realizar un ejemplo aplicativo de la estructura ForNext para el clculo de la

    suma de cuadrados hasta un valor X definido en una celda.

    Las instrucciones estn definidas para calcular la suma de cuadrados hasta el nmero colocado en la

    celda B2.Al finalizar las operaciones un cuadro de texto indicar el resultado correspondiente.

    Para hacer uso de la macro nos dirigimos a la barra de men y seleccionamos la ficha Programador.

    Desde el icono Macros ubicamos la instruccin Suma_Cuadrados y ejecutamos.

    Otra forma de acceder a la macro consiste el definir un mtodo abreviado. Para ello, dentro del

    listado de macros, seleccionamos la macro Suma_Cuadrados y colocamos Opciones. Agregamos

    una breve descripcin de la macro y definimos Ctrl + S como acceso rpido.

  • 5/20/2018 Macros - Ayuda

    14/15

    FORMULARIO DE REPASO

    Este formulario es para calcular el costo de una pizza con algunos valores de la pizza relativos.

    Lo que este formulario busca es dar el precio mas rpido solo sealando el tipo, tamao y da de

    pedido; y es de ayuda por ejemplo para una pizzeria que se desempea en solo el delivery de pizzas.

    El cdigo empieza sealando los datos que son constantes que vendran a ser los precios, los cuales

    se pueden modificar en el cdigo.

    Luego se inserta las opciones que irn dentro de cada una de las listas.

  • 5/20/2018 Macros - Ayuda

    15/15

    Luego de esto se tendr que escribir el cdigo correspondiente para el clculo del precio, que

    dependen de cada tipo de pizza, tamao y da de la semana pues en los das Martes, Jueves y

    Sbado hay una promocin que es 21.

    Asi quedar el formulario final.