Guia de Laboratorio 9 - MSExcel 2016
Guia de Laboratorio 9 - MSExcel 2016
Guia de Laboratorio 9 - MSExcel 2016
PROCEDIMIENTOS
Prctica de PROCEDIMIENTOS
Abra un libro en Excel y nombre al libro como "MacrosB.xlsm" y llame la Hoja1 como "Function1" donde se
mostrar la tabla resultante. Realice los pasos necesarios para disear la funcin definida por el usuario que
nos permite calcular el valor de la funcin g(x).
Tabla Resultante:
PROCEDIMIENTO
A continuacin, se describe en detalle el procedimiento para crear una funcin en un mdulo que nos permitir calcular el rea de un
hexgono. Solo tenemos que seguir cada uno de los pasos indicados.
1. En el libro, ingrese al Editor de Visual Basic (alt+F11)
2. Inserte un mdulo, seleccionando del men Insertar Mdulo
3. En la ventana Cdigo, escriba el nombre a la funcin como Function y, a continuacin, dejando un espacio, el nombre del procedimiento.
Para Nuestro caso introduzca en el rea de cdigo Function g.
Pgina 1 de 21
4.
5.
6.
Una vez ingresado el nombre, presione ENTER. El editor de VBA aade unos parntesis despus del nombre inserta y adems una nueva
lnea con las instrucciones End Function.
A continuacin, dentro de los parmetros que agrego VBA, coloca el parmetro x.
Entre estas dos lneas, escriba el cdigo que sigue, que contiene la frmula para calcular el valor de la funcin g(x). Para ello introduzca
la siguiente lnea:
Function g(x)
g = 2 * x ^ 3 + Log(x) - Cos(x) / Exp(x) + Sin(x)
End Function
7.
8.
9.
Nota: La sintaxis de la funcin g(x) en vba es diferente a la de Excel, La funcin debe de trabajarse para poderla expresar en la sintaxis
correcta para vba.
a. En Excel la sintaxis es: 2*B3^3+LN(B3)-COS(B3)/EXP(B3)+SENO(B3)
b. En VBA la sintaxis es 2 * x ^ 3 + Log(x) - Cos(x) / Exp(x) + Sin(x)
Observe, por ejemplo, que la funcin logaritmo natural ln(x), en Excel se escribe LN mientras que en VBA se escribe Log. Ahora Guarde
el Libro: " MacrosB.xlsm ".
Las funciones definidas por el usuario las podemos visualizar dando clic en Pestaa Formulas y buscamos en categoras de la funcin la
que diga funciones Definidas por el usuario y encontraremos la funcin g.
La funcin g nos pide un parmetro (el valor de x), que para nuestro caso deber de ubicarse en la celda B2, pulsar "=g( )" y seleccionar
con el puntero la celda A2, luego ENTER y listo. Obtendremos el resultado que se muestra en la imagen anterior. Para completar la
tabla resultante basta con copiar y arrastrar desde B2 hasta B9.
Nuevamente Guarde los cambios efectuados en el libro "MacrosB.xlsm ". La hoja es resultante de la muestra de la pgina 1. Antes de
guardar asegrese de haber nombrado la hoja como "Function1".
Resultado esperado:
Pgina 2 de 21
PROCEDIMIENTO
En el Paso a paso, que se presenta a continuacin, describimos en detalle el procedimiento que debemos realizar para crear
la solucin en un mdulo que nos permitir calcular el promedio de notas. Solo tenemos que seguir cada uno de los pasos
indicados.
1. Abre nuestro libro de Trabajo "BaseGua9 e ingresa a la Hoja1 y renombra a la Hoja como "Notas"
2. Configura las celdas donde se mostrarn los datos a ingresar segn la muestra de la tabla de la pgina 2. Es decir, no llenes
la tabla con datos, solo aplica negritas y dos decimales donde corresponda.
3. Ingrese al Editor de Visual Basic con la combinacin de teclas (Alt+F11)
4. Inserte un mdulo, seleccionando del men Insertar Mdulo
5. En la ventana Cdigo, escriba al inicio del cdigo el nombre del Procedimiento comenzando con Sub y a continuacin,
dejando un espacio, el nombre del procedimiento. Para Nuestro caso le asignaremos como nombre "Promedio_de_Notas".
6. Una vez ingresado el nombre, presione ENTER. El editor de VBA aade unos parntesis despus del nombre insertado y
adems agrega una nueva lnea con las instrucciones End Sub.
7. A continuacin, dentro de los parmetros que agrego VBA, coloca los parmetros que recibe la funcin (si existen), para
nuestro caso no existe ningn parmetro.
8. Entre estas dos lneas, escriba el cdigo que sigue, que contiene el cdigo correspondiente a la codificacin del diseo de
la solucin del problema para calcular el promedio de las notas de un alumno. Para ello introduzca las siguientes lneas:
Pgina 3 de 21
LINEAS DE CODIGO:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Sub Promedio_de_Notas()
'Declaracin de variables
Dim NOTAS As Integer
Dim ACUM As Double
Dim CONT As Integer
Dim CALIF As Double
Dim PROM As Double
Dim CARNET As String
'
CARNET = InputBox("Cual es el Carnet del Alumno?", "Carnet de Alumno?")
'
Do
' Cuadro de dialogo que nos indica que tipo de datos hay que introducir
NOTAS = InputBox("Cuantas Notas Desea Ingresar?", "Cantidad de Notas?")
Loop Until (NOTAS > 0)
ACUM = 0 'Inicializacin
For CONT = 1 To NOTAS
Do
CALIF = InputBox("Ingrese la nota No." & CStr(CONT), "notas")
Loop Until (CALIF >= 0 And CALIF <= 10)
ThisWorkbook.Sheets("Notas").Select
ActiveSheet.Range("A" & CStr(CONT + 1)).Value = "Nota " & CStr(CONT)
ActiveSheet.Range("B" & CStr(CONT + 1)).Value = CALIF
ACUM = ACUM + CALIF
Next
PROM = ACUM / (CONT - 1)
MsgBox "El Alumno: " & CStr(CARNET), vbOKOnly + vbInformation, "Carnet del Alumno"
MsgBox "Tiene un promedio de notas de: " & CStr(PROM), vbOKOnly + vbInformation, "Promedio de Notas"
ActiveSheet.Range("D2").Value = "Carnet del Alumno: "
ActiveSheet.Range("D3").Value = "Cantidad de notas: "
ActiveSheet.Range("D4").Value = "Promedio: "
ActiveSheet.Range("E2").Value = CARNET
ActiveSheet.Range("E3").Value = NOTAS
ActiveSheet.Range("E4").Value = PROM
End Sub
--------------------------------------------------------------------------------------------
9.
Pgina 4 de 21
12. Al ejecutar el procedimiento aparecern los cuadros de texto que se muestran en la pgina 2. Corrobore los resultados con los siguientes
Datos de Prueba: Su_Carnet, 5, 10.0, 10.0, 10.0, 10.0, 9.0. Aparecen los resultados esperados.
Si en algn momento aparece la pantalla como la que se muestra, no se
preocupe, pueda que haya ejecutado el procedimiento y no haya
ingresado ningn dato, para tal caso seleccionar Finalizar. Si a la hora de
ejecutar el procedimiento existe una interrupcin similar a la muestra (al
estar probando los datos) donde aparece esa misma pantalla,
probablemente exista un error en una lnea de cdigo. Para identificarla
solo basta con pulsar Depurar e inmediatamente le seala con color
amarillo la lnea donde probablemente se encuentra el error. Al
corregirlo vuelva a ejecutar la macro que invoca al procedimiento.
13. Ahora Guarde el Libro y renmbrelo "MacrosC.xlsm", recuerde gurdalo
como un libro de Excel habilitado para Macros. La hoja es el resultado de la muestra de la pgina 2, donde se encuentran los datos de
pruebas (ingresados) y adems los clculos de los mismos que se encuentra listo para ser impresos y conforme al flujograma codificado
de la pgina 3. Antes de guardar asegrese de haber nombrado la hoja como "Notas". Al finalizar su libro tendr una extensin .xlsm.
Otro ejercicio:
INDICACIONES: Revise la solucin del siguiente ejercicio, luego digite el Diseo de Solucin, prubelo y corrobore los resultados. Para
ello procederemos a realizar un Mdulo que disee una solucin que permita ingresar un monto en dlares americanos y permita
conocer su equivalente ya sea en: Lempiras, Quetzales, Crdoba oro y Colones Costarricenses. Sabiendo que: Un Dlar equivale a:
17.16 Lempiras, 7.94 Quetzales, 14.90 Crdobas oro y 389.16 Colones Costarricenses.". Los resultados se mostrarn en la hoja de
Excel denominada "Convertir" que se encontrar en nuestro libro de trabajo "MacrosC" como "Hoja2". El modulo deber asignar al
objeto de WortArt que se lee como "Conversin" ubicado en la hoja de insercin de datos. Adems de una tecla rpida "r". Corrobore
los resultados con los siguientes Datos de Prueba: 100, r
Resultado esperado:
Pgina 5 de 21
PROCEDIMIENTO
En el Paso a paso, que se presenta a continuacin, describimos en detalle el procedimiento que debemos realizar para crear la solucin en
un mdulo que nos permitir calcular la conversin de las monedas. Solo tenemos que seguir cada uno de los pasos indicados.
1. Continuando en nuestro libro de Trabajo "MacrosC" ingrese a la Hoja2 y renombra a la Hoja como "Convertir"
2. Configura las celdas donde se mostrarn los datos a ingresar segn la muestra de la tabla de la pgina 5. Es decir, no llenes la tabla con
datos, solo aplica negritas y dos decimales donde corresponda.
3. Ingrese al Editor de Visual Basic con la combinacin de teclas (Alt+F11)
4. Inserte un mdulo, seleccionando del men Insertar Mdulo
5. En la ventana Cdigo, escriba al inicio del cdigo el nombre del Procedimiento comenzando con Sub y a continuacin, dejando un
espacio, el nombre del procedimiento. Para Nuestro caso le asignaremos como nombre " Cambio_Moneda".
Pgina 6 de 21
6.
7.
8.
Una vez ingresado el nombre, presione ENTER. El editor de VBA aade unos parntesis despus del nombre insertado y adems agrega
una nueva lnea con las instrucciones End Sub.
A continuacin dentro de los parmetros que agrego VBA, coloca los parmetros que recibe la funcin (si existen), para nuestro caso no
existe ningn parmetro.
Entre estas dos lneas, escriba el cdigo que sigue, que contiene el cdigo correspondiente a la codificacin del diseo de la solucin del
problema para calcular el valor de cambio entre las monedas. Para ello introduzca las siguientes lneas:
LINEAS DE CODIGO:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Sub Cambio_Moneda()
'Declaracin de Constantes Locales
Const LE As Double = 17.16
Const QU As Double = 7.94
Const CO As Double = 14.9
Const CC As Double = 389.16
'Declaracin de Variables Locales
Dim Moneda As Double
Dim M_Conv As Double
Dim Opc As String
Dim Mens As String
'Validacin de Moneda
Do
' Cuadro de dialogo que nos indica que tipo de datos hay que introducir
Moneda = InputBox("Digite el Monto en Dlares a convertir (US$)", "US$ a convertir")
Loop Until (Moneda > 0)
'Validacin de Opcin
Do
Opc = InputBox("Elija a que moneda desea convertir:
"_
&"
(L) Lempiras
"_
& " (Q) Quetzales
"_
& " (C) Crdoba
"_
& " (R) Colon Costarricense ", "Eleccin de Tipo de Moneda?")
Loop Until Opc = "L" Or Opc = "l" Or Opc = "Q" Or Opc = "q" Or Opc = "C" Or Opc = "c" Or Opc = "R" Or Opc = "r"
'Selecciona el tipo de Conversin en base a una estructura de casos
Select Case Opc
Case "L", "l"
M_Conv = Moneda * LE
MsgBox "Equivale a " & CStr(M_Conv) & " Lempiras", vbOKOnly + vbInformation, "Lempiras"
Mens = " Lempiras: "
Case "Q", "q"
M_Conv = Moneda * QU
MsgBox "Equivale a " & CStr(M_Conv) & " Quetzales", vbOKOnly + vbInformation, "Quetzales"
Mens = " Quetzales: "
Case "C", "c"
M_Conv = Moneda * CO
MsgBox "Equivale a " & CStr(M_Conv) & " Crdobas", vbOKOnly + vbInformation, "Crdobas"
Mens = " Crdobas: "
Case "R", "r"
M_Conv = Moneda * CC
MsgBox "Equivale a " & CStr(M_Conv) & " Colones Costarricenses", vbOKOnly + vbInformation, "Costarricenses"
Mens = " Colones Costarricenses: "
Case Else
MsgBox "Sin Conversin"
Mens = "Sin Conversin"
End Select
'ubicacin de los datos
ThisWorkbook.Sheets("Convertir").Select
ActiveSheet.Range("D2").Value = "Monto en Dlares: "
ActiveSheet.Range("D3").Value = " Equivalente a" & Mens
ActiveSheet.Range("E2").Value = Moneda
ActiveSheet.Range("E3").Value = M_Conv
End Sub
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Pgina 7 de 21
9.
PROCEDIMIENTO
1. Descargue del curso y copie en la unidad C:/ la carpeta de "IMAGENES-GLXX".
Descrguela y gurdela, y coloque en XX su grupo de laboratorio
2. Presione La Teclas Alt + F11, para entrar al editor de Visual Basic.
3. Activa las siguientes opciones:
Pgina 8 de 21
6.
Ingrese los objetos en ese orden para que el cdigo se relacione con
los objetos ingresados al formulario.
7.
8.
Las propiedades que cambiaras ser nicamente para los siguientes objetos
No
1
2
3
4
5
Control
Frame1
CommandButton1
CommandButton2
CommandButton3
CommandButton4
Caption
Frame1
Ver Seleccin
Restablecer
Ver Formulario 2
Cerrar
Name
Frame1
CommandButton1
CommandButton2
CommandButton3
CommandButton4
Propiedad
Imagen de fondo y tamao
Para cambiar la Propiedad de la Imagen basta con activar la ventana de propiedades (de la vista de Diseo de formularios) y seleccionar el
objeto "Frame1". Luego elegir la pestaa Por Categoras, elegir la categora "Imagen" y de ella seleccionar el botn
dentro de la
propiedad Picture. A partir de ah deber buscar la carpeta "IMAGENES-GLXX"que usted descargo y ubico en la unidad "C: ", y seleccionar la
imagen con nombre "Fondo.jpg". En cuanto a la propiedad PictureSizeMode seleccione en base a lo que se encuentra en la muestra.
Digita el cdigo pulsando doble clic al Botn de Comando "CommandButton1" y aparecer la pantalla del Editor de cdigo. Haz
lo mismo con el resto de los objetos que ac se mencionan
10. Ahora procedemos a escribir el siguiente cdigo para cada uno de los botones como se muestra a continuacin:
9.
Pgina 9 de 21
LINEAS DE CODIGO:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Private Sub CommandButton1_Click()
Frame1.Caption = "Frame del grupo 1"
Frame2.Caption = "Frame del grupo 2"
Frame3.Caption = "Frame del grupo 3"
Frame1.Picture = LoadPicture("c:\IMAGENES-GLXX\Fondo.jpg")
Frame1.PictureSizeMode = fmPictureSizeModeZoom
If OptionButton1.Value = True Then
Label1.Caption = "Opcin 1!!!!"
OptionButton1.Caption = "Opcin 1!!!!"
OptionButton2.Caption = "OptionButton2"
OptionButton3.Caption = "OptionButton3"
OptionButton4.Caption = "OptionButton4"
OptionButton5.Caption = "OptionButton5"
OptionButton6.Caption = "OptionButton6"
OptionButton7.Caption = "OptionButton7"
Else
If OptionButton2.Value = True Then
Label1.Caption = "Opcin 2!!!!"
OptionButton2.Caption = "Opcin 2!!!!"
OptionButton1.Caption = "OptionButton1"
OptionButton3.Caption = "OptionButton3"
OptionButton4.Caption = "OptionButton4"
OptionButton5.Caption = "OptionButton5"
OptionButton6.Caption = "OptionButton6"
OptionButton7.Caption = "OptionButton7"
Else
If OptionButton3.Value = True Then
OptionButton3.Caption = "Opcin 3!!!!"
Label1.Caption = "Opcin 3!!!!"
OptionButton1.Caption = "OptionButton1"
OptionButton2.Caption = "OptionButton2"
OptionButton4.Caption = "OptionButton4"
OptionButton5.Caption = "OptionButton5"
OptionButton6.Caption = "OptionButton6"
OptionButton7.Caption = "OptionButton7"
Else
If OptionButton4.Value = True Then
Label1.Caption = "Opcin 4!!!!"
OptionButton4.Caption = "Opcin 4!!!!"
OptionButton1.Caption = "OptionButton1"
OptionButton2.Caption = "OptionButton2"
OptionButton3.Caption = "OptionButton3"
OptionButton5.Caption = "OptionButton5"
OptionButton6.Caption = "OptionButton6"
OptionButton7.Caption = "OptionButton7"
Else
If OptionButton5.Value = True Then
Label1.Caption = "Opcin 5!!!!"
OptionButton5.Caption = "Opcin 5!!!!"
OptionButton1.Caption = "OptionButton1"
OptionButton2.Caption = "OptionButton2"
OptionButton3.Caption = "OptionButton3"
OptionButton4.Caption = "OptionButton4"
OptionButton6.Caption = "OptionButton6"
OptionButton7.Caption = "OptionButton7"
Else
Label1.Caption = "No ha escogido nada!!!!"
End If
End If
End If
End If
End If
Pgina 10 de 21
11. Probar funcionamiento. Para ello procedemos a presionar el botn Ejecutar Sub/UserForm en la barra de herramienta
o
presionamos F5. Aparecer el formulario que se muestra en la pagina 9.
12. Crea un Mdulo para invocar el formulario. Nombra al mdulo como "FORM1" que servir para invocar el formulario actual. En
medio de este cdigo deber de digitar las siguientes 2 lneas:
Load UserForm1
UserForm1.Show
13. Ahora debemos crear un botn desde la hoja para llamar al formulario. Dibujamos el botn segn como se explic en la gua de
laboratorio 8 y asigna el modulo creado en el paso 12.
14. Recuerde estar guardando los cambios realizados al Libro "MacrosC.xlsm". Al terminar los pasos, en el libro se debe encontrar la Hoja
resultante de la muestra de la pgina 8, que se encuentra lista para ser utilizado. Antes de guardar asegrese de haber nombrado la
hoja resultante como " ResultadoF1".
Ejemplo 2:
Procederemos a realizar un Mdulo que permita ejecutar los formularios que nos permitir conocer ms de los objetos de los
formularios. Para ello este caso los resultados se mostrarn en una hoja de Excel denominada "ResultadoF2" que se encontrar en
nuestro libro de trabajo "MacrosC.xlsm" como "Hoja4". Recuerde que este ltimo punto lo aprendi en el laboratorio anterior. Al igual
que el anterior formulario usted deber analizar qu es lo que hace cada Estructura del cdigo al ejecutar el formulario y complementar la
documentacin del cdigo para aquellas estructuras principales. <<Pregunte a su instructor si lo considera necesario>>
Pgina 11 de 21
Resultado Esperado:
PROCEDIMIENTO
1. Presione La Teclas Alt + F11, para entrar al editor de Visual Basic.
2. Activa las siguientes opciones:
Pgina 12 de 21
6.
7.
Las propiedades que cambiaras ser nicamente para los siguientes objetos
No
1
2
3
4
5
8.
9.
Control
Image1
ScrollBar1
SpinButton1
CommandButton1
CommandButton2
Caption
Ver Formulario 1
Ver Referencia
Name
Image1
Propiedad
Imagen de fondo y tamao
CommandButton1
CommandButton2
Digita el cdigo pulsando doble clic al Botn de Comando "CommandButton1" y aparecer la pantalla del Editor de cdigo. Haz
lo mismo con el resto de los objetos que ac se mencionan.
Ahora procedemos a escribir el siguiente cdigo para el formulario y cada uno de los botones como se muestra a continuacin:
LINEAS DE CODIGO:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Private Sub CommandButton1_Click()
UserForm2.Hide
UserForm1.Show
End Sub
'
Private Sub CommandButton2_Click()
Dim rango As Range
Set rango = Range(RefEdit1.Text)
Label10.Caption = rango.Address
rango.Select
Label13.Caption = rango.Rows.Count
Label14.Caption = rango.Columns.Count
Label12.Caption = CStr(rango(2, 2))
End Sub
'
Private Sub ScrollBar1_Change()
Label1.Caption = ScrollBar1.Value * 2
Label2.Caption = ScrollBar1.Value
End Sub
'
Private Sub SpinButton1_Change()
Label5.Caption = SpinButton1.Value * 2
Label6.Caption = SpinButton1.Value
End Sub
'
Private Sub UserForm_Activate()
CommandButton1.Caption = "Ver Formulario 1"
CommandButton1.AutoSize = True
Label1.Caption = "valor del scrollbar"
Label2.Caption = "valor del scrollbar * 2"
Label3.Caption = "scrollbar"
Label4.Caption = "scrollbar * 2"
ScrollBar1.Min = -100
ScrollBar1.Max = 200
ScrollBar1.SmallChange = 2
ScrollBar1.LargeChange = 10
SpinButton1.Min = -500
SpinButton1.Max = 300
SpinButton1.SmallChange = 20
Label5.Caption = "valor del SpinButton1"
Label6.Caption = "valor del SpinButton1 * 2"
Label7.Caption = "SpinButton1"
Label8.Caption = "SpinButton1 * 2"
Image1.Picture = LoadPicture("c:\IMAGENES-GLXX\Fondo.jpg")
Image1.PictureSizeMode = fmPictureSizeModeStretch
Label9.Caption = "rango"
Label11.Caption = "valor(2,2 de la seleccion)"
CommandButton2.Caption = "ver referencia"
End Sub
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Pgina 13 de 21
Para cambiar la Propiedad de la Imagen basta con activar la ventana de propiedades (de la vista de Diseo de formularios) y seleccionar el
objeto "Image1". Luego elegir la pestaa Por Categoras, elegir la categora "Imagen" y de ella seleccionar el botn
dentro de la
propiedad Picture. A partir de ah deber buscar la carpeta "IMAGENES-GLXX"que usted descargo y ubico en la unidad "C: ", y seleccionar
la imagen con nombre "bear.jpg". En cuanto a la propiedad PictureSizeMode seleccione en base a lo que se encuentra en la muestra.
10. Probar funcionamiento. Para ello procedemos a presionar el botn Ejecutar Sub/UserForm en la barra de herramienta
o
presionamos F5. Aparecer el formulario que se muestra en la pagina 12.
11. Dentro del boton de comando 1 invocar el formulario1 y ocultar el formulario actual. En medio del cdigo del botn de comando
deber de digitar las siguientes 2 lneas:
UserForm2.Hide
UserForm1.Show
12. Recuerde estar guardando los cambios realizados al Libro "MacrosC.xlsm". Al terminar los pasos, en el libro se debe encontrar la Hoja
resultante de la muestra de la pgina 12, que se encuentra lista para ser utilizado. Antes de guardar asegrese de haber nombrado la
hoja resultante como " ResultadoF2".
No olvide subir el libro desarrollado durante su prctica de laboratorio: MacrosB.xlsm y MacrosC.xlsm al enlace Entrega de archivos
Gua 9 en el curso virtual.
Pgina 14 de 21
PROBLEMAS PROPUESTOS
Estos ejercicios consltelos con su material de clases o con su Instructor, si no los puede Desarrollar. Puede desarrollarlos
dentro de la hora de laboratorio, hora de practica libre o en casa. Desarrolle cada ejercicio en un libro diferente y cuando los
valla finalizando, sbalos al enlace: Entrega de archivos Gua 9. Ejercicio Propuesto, nombre cada archivo segn el nmero
de ejercicio.
Ejercicio 1: Haga el ejercicio de conversin de moneda utilizando las sentencias IF THEN ELSE, y presentando en una hoja de Excel los
siguientes datos:
1. El monto a convertir y
2. La conversin, especificando el tipo de moneda a la que se convirti.
Ejercicio 2: Digite los siguientes datos en la hoja de su libro de trabajo.
Inserte un mdulo en vba y digite el siguiente cdigo
Option Explicit
Function UNA(LISTA As Range)
Dim n As Long
Dim ale As Long
Randomize
n = LISTA.Count
ale = Int(Rnd * n) + 1
UNA = LISTA.Value2(ale, 1)
End Function
Realice los pasos necesarios para ejecutar la funcin, observe y analice su resultado
Ejercicio 3: Inserte un nuevo mdulo en vba y copie el siguiente cdigo. La funcin devuelve la suma de dos valores que se le pasan
como parmetros desde un procedimiento.
Sub profun1()
ActiveCell.Value = Suma(ActiveSheet.Range("A1").Value,
ActiveSheet.Range("A2").Value)
End Sub
Function Suma(V1 As Integer, V2 As Integer) As Integer
Dim Total As Integer
Total = V1 + V2
Suma = Total
End Function
Realice los pasos necesarios para ejecutar la funcin, observe y analice su resultado
Ejercicio 4: Cree la funcin que se presentan a continuacin. La funcin calcula el factorial de un nmero entero
Function facto(n)
Dim i As Integer
facto = 1
i=0
Do
i=i+1
facto = facto * i
Loop While i <> n
End Function
Pgina 15 de 21
Ejercicio 5: Copie los datos de la Imagen de muestra y calcule la edad insertando un mdulo en vba, donde va a digitar el cdigo que
se muestra.
Sub nacimiento()
Dim dias As Integer, Dsemana As Integer, Factual As Date, d As String, cumple As Date
Rem Dsemana es una variable que da un nmero que indica el da de la semana
Rem dado por la funcin WEEKDAY, que en Excel es =DIASEM(fecha)
Static Fnacimiento As Date
Factual = Date 'Date es la funcin de VBA equivalente a =HOY()
Fnacimiento = Factual
Fnacimiento = InputBox(Prompt:="Introduzca su fecha de nacimiento", _
Title:="Formato DD-MM-AAAA", Default:=Fnacimiento)
dias = Factual - Fnacimiento
Dsemana = Application.WorksheetFunction.Weekday(Fnacimiento)
Select Case Dsemana
Case 1: d = "Domingo"
Case 2: d = "Lunes"
Case 3: d = "Martes"
Case 4: d = "Miercoles"
Case 5: d = "Jueves"
Case 6: d = "Viernes"
Case 7: d = "Sabado"
End Select
MsgBox Prompt:="Usted naci un " & d & " hace " & dias & " das" & Chr(10) _
& "Tiene " & CalEdad(Fnacimiento) & " Aos", _
Title:="Esta informacin es correcta siempre que hoy sea " & Factual
End Sub
'Funcin que calcula la edad en aos
Function CalEdad(Fnacimiento As Date)
Dim Fecha As Date
CalEdad = Abs(DateDiff("yyyy", Fnacimiento, Date))
Fecha = DateAdd("YYYY", CalEdad, Fnacimiento)
If Fecha > Date Then CalEdad = CalEdad - 1
End Function
Ejercicio 6: Disear una Funcin que permite convertir Kilmetros en Millas y viceversa. Sabiendo que un milln de Millas equivale a
1.609.344 Kilmetros
Ejercicio 7: Disear una Funcin que permita calcular el descuento aplicado a clientes. Un 3% si la venta es >= a un milln y un 1%
ms es menor.
Ejercicio 8: Cree una hoja en la que existen diferentes botones de opcin y cada uno de ellos tiene diferentes valores de descuentos
as: a. el domingo es del 5 b. el lunes del 10% c. el resto de semana no hay descuento. Se aplica a una lista de productos, y que de
acuerdo a la seleccin del botn de opcin se muestra el descuento en la hoja de clculo y las respectivas operaciones en ella, como
muestra el ejemplo:
Pgina 16 de 21
Ejercicio 9: Procederemos a realizar un Mdulo que permita ejecutar los formularios que nos permitir conocer ms de los objetos
de los formularios. Usted deber analizar qu es lo que hace cada Estructura del cdigo al ejecutar el formulario y complementar la
documentacin del cdigo para aquellas estructuras principales. <<Pregunte a su instructor si lo considera necesario>>
Resultado Esperado:
1.
Botn de comando 1:
o Para Ver contenido de TextBox
(clic) y tambin de los
ListBox.... (clic)
o Botn de comando 2: Para ver
los valores seleccionados con
el botn de opciones o Ver
OptionButton.....
2 Cuadros de texto: Introducir el valor de los cuadros
de texto
2.
La muestra que se presenta a continuacin es una Vista de Diseo de Formulario. Usted deber disear el formulario Ingresando
cada objeto en el orden y ubicacin de la muestra. Esto le ayudar a suministrarle funcionamiento a cada objeto del formulario
y que se encuentra relacionado con el cdigo que se ingresar en el paso siguiente.
Pgina 17 de 21
4.
5.
6.
Las propiedades que se cambiaras se har nicamente dentro del cdigo para cada objeto.
Ahora procedemos a escribir el siguiente cdigo para el formulario y cada uno de los botones como se muestra a continuacin:
LINEAS DE CODIGO:
A este cdigo habr que hacerle algunas mejoras para que los datos aparezcan en la hoja " ResultadoF3 ".
Se sugiere adems que despus de haber completado cada objeto, modifique objeto CheckBox para que se pueda elija varias opciones
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Pgina 18 de 21
'---------------------- Textbox
TextBox1.SetFocus
'----------------- Boton de comando
CommandButton1.Caption = "Ver contenido de TextBox y tambien de los ListBox...."
CommandButton1.AutoSize = True
CommandButton2.Caption = "Ver seleccion de OptionButton...."
CommandButton2.AutoSize = True
'-----------------ComboBox
With ComboBox1
.AddItem "primer valor"
ThisWorkbook.Sheets("Hoja5").Select
.AddItem Range("A1").Value
.AddItem Range("A2").Value
.AddItem Range("A3").Value
.AddItem Range("A4").Value
.AddItem Range("A5").Value
.AddItem Range("A6").Value
End With
'------------------Listbox
With ListBox1
.AddItem "el primer valor"
For i = 1 To 9
.AddItem ("El " & CStr(i) & " valor")
Next
End With
'----------------------------CheckBox
CheckBox1.Caption = "Activado"
CheckBox1.Value = True
CheckBox2.Caption = "Desactivado"
CheckBox2.Value = False
'------------------------------Botones de Opcion
OptionButton1.GroupName = "grupo1"
OptionButton2.GroupName = "grupo1"
OptionButton3.GroupName = "grupo1"
OptionButton4.GroupName = "grupo2"
OptionButton5.GroupName = "grupo2"
End Sub
Private Sub UserForm_Click()
Static colorformR As Integer
Static colorformG As Integer
Static colorformB As Integer
colorformR = colorformR + 15
colorformG = colorformG + 30
colorformB = colorformB + 45
If colorformR >= 255 Then
colorformR = 15
colorformG = 30
colorformB = 45
End If
UserForm1.BackColor = RGB(colorformR, colorformG, colorformB)
End Sub
Pgina 19 de 21
Pgina 20 de 21
7.
8.
9.
Probar funcionamiento. Para ello procedemos a presionar el botn Ejecutar Sub/UserForm en la barra de herramienta
o
presionamos F5. Aparecer el formulario que se muestra en la pgina 18.
Crea un Mdulo para invocar el formulario. Nombra al mdulo como "FORM3" que servir para invocar el formulario actual. En
medio de este cdigo deber de digitar las siguientes 2 lneas:
Load UserForm3
UserForm3.Show
Ahora debemos crear un botn desde la hoja para llamar al formulario. Dibujamos el botn segn como se explic en la gua de
laboratorio 8 y asigna el modulo creado en el paso 8. Recuerde estar guardando con frecuencia los cambios realizados.
Ejercicio 10: Adapte el codigo del formulario 1 de la guia de laboratorio 8 para que los datos del ingresados al formulario "Dias
Vividos" se inserten despues de haber ingresado el ultimo registro (es decir que se inserte una fila por de bajo del registro anterior o
ultimo ingresado) y no en la primera ubicacin especificada como se hizo en el formulario "Dias Vividos"
Ejercicio 11: Adapte el codigo del formulario 3 de la guia de laboratorio 8 para que el formulario "Alumnos-msm115" se le agrege un
boton que tenga la funcionalidad de eliminar un registro especificado despues de haberlo buscado y encontrado.
Recuerde que es responsabilidad del Estudiante asegurarse que es lo que hace cada linea de comando que se encuentra en cualquiera
de las guias de laboratorio de VBA. Todos estos elementos pueden evaluarse a la hora de cada evaluacin. Ademas Investigue otras
funciones VBA implementadas para la busqueda, financieras, estadisticas como por ejemplo a la utilizada para buscar carnet en
ejercicio "Alumnos-msm115".
Recuerde subir cada archivo al enlace del aula Entrega de archivos Gua 9. Ejercicio
Propuesto.
Pgina 21 de 21