Macros - Ayuda
-
Upload
jiancarlos-saul-chacchi-huaman -
Category
Documents
-
view
76 -
download
0
description
Transcript of Macros - Ayuda
-
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.