+ All Categories

Guia%09

Date post: 14-Jul-2016
Category:
Upload: carlos-roberto-gavarrete
View: 213 times
Download: 0 times
Share this document with a friend
Description:
visual fox pro
13
UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERIA Y ARQUITECTURA ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS MANEJO DE SOFTWARE PARA MICROCOMPUTADORAS CICLO II-2008 GUIA Nº 9 Hojas Electrónicas de Cálculo Microsoft Excel 2003 Professional Macros con VBA Objetivo de la Guía: Conocer lo objetos utilizados dentro de un formulario y sus eventos, programando estos últimos para que interactúen entre sí, así como invocar un formulario a través de otro. Crear funciones definidas por el usuario en las macros de Excel. Ejercicio 1: En un libro nuevo que llamará “Practica9”, Cree el formulario que se muestra en la figura 1. Figura 1 Página 1 de 13
Transcript
Page 1: Guia%09

UNIVERSIDAD DE EL SALVADORFACULTAD DE INGENIERIA Y ARQUITECTURAESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOSMANEJO DE SOFTWARE PARA MICROCOMPUTADORASCICLO II-2008

GUIA Nº 9Hojas Electrónicas de Cálculo

Microsoft Excel 2003 ProfessionalMacros con VBA

Objetivo de la Guía: • Conocer lo objetos utilizados dentro de un formulario y sus eventos, programando

estos últimos para que interactúen entre sí, así como invocar un formulario a través de otro.

• Crear funciones definidas por el usuario en las macros de Excel.

Ejercicio 1: En un libro nuevo que llamará “Practica9”, Cree el formulario que se muestra en la figura 1.

Figura 1

Página 1 de 13

Page 2: Guia%09

Digíteles el código a los objetos del UserForm1

Private Sub CommandButton1_Click()If OptionButton1.Value = True Then Label1.Caption = "opcion 1!!!!"Else If OptionButton2.Value = True Then Label1.Caption = "opcion 2!!!!" Else If OptionButton3.Value = True Then Label1.Caption = "opcion 3!!!!" Else If OptionButton4.Value = True Then Label1.Caption = "opcion 4!!!!" Else If OptionButton5.Value = True Then Label1.Caption = "opcion 5!!!!" Else Label1.Caption = "no ha escogido nada" End If End If End If End IfEnd IfIf OptionButton6.Value = True Then Label2.Caption = "opcion 6!!!!"Else If OptionButton7.Value = True Then Label2.Caption = "opcion 7!!!!" Else Label2.Caption = "no ha escogido nada" End IfEnd If

End SubPrivate Sub CommandButton2_Click()UserForm1.HideUserForm2.ShowEnd Sub

Private Sub UserForm_Activate()Frame1.Caption = "Frame del grupo 1"Frame2.Caption = "Frame del grupo 2"Frame1.Picture = LoadPicture("c:\windows\Abanicos.bmp")Frame1.PictureSizeMode = fmPictureSizeModeZoomCommandButton1.Caption = "ver seleccion"

Página 2 de 13

Page 3: Guia%09

CommandButton1.AutoSize = TrueCommandButton2.Caption = "ver formulario 2"CommandButton2.AutoSize = True

End Sub

Cree el formulario 2 con los objetos que se muestran en la figura 2.

Image1

RefEdit1

Label16

ScrollBar1

SpinButton1

Label15

Figura 2

Digíteles el código a los objetos del UserForm2 Private Sub CommandButton1_Click()UserForm2.HideUserForm1.ShowEnd Sub

Private Sub CommandButton2_Click()Dim rango As RangeSet rango = Range(RefEdit1.Text)Label10.Caption = rango.Addressrango.SelectLabel13.Caption = rango.Rows.CountLabel14.Caption = rango.Columns.CountLabel12.Caption = CStr(rango(2, 2))

End Sub

Private Sub ScrollBar1_Change()Label1.Caption = ScrollBar1.Value * 2

Página 3 de 13

Page 4: Guia%09

Label2.Caption = ScrollBar1.ValueEnd Sub

Private Sub SpinButton1_Change()Label5.Caption = SpinButton1.Value * 2Label6.Caption = SpinButton1.Value

End Sub

Private Sub UserForm_Activate()CommandButton1.Caption = "ver formulario 1"CommandButton1.AutoSize = TrueLabel1.Caption = "valor del scrollbar"Label2.Caption = "valor del scrollbar * 2"Label3.Caption = "scrollbar"Label4.Caption = "scrollbar * 2"ScrollBar1.Min = -100ScrollBar1.Max = 200ScrollBar1.SmallChange = 2ScrollBar1.LargeChange = 10SpinButton1.Min = -500SpinButton1.Max = 300SpinButton1.SmallChange = 20Label5.Caption = "valor del SpinButton1"Label6.Caption = "valor del SpinButton1 * 2"Label7.Caption = "SpinButton1"Label8.Caption = "SpinButton1 * 2"Image1.Picture = LoadPicture("c:\windows\Abanicos.bmp")Image1.PictureSizeMode = fmPictureSizeModeStretchLabel9.Caption = "rango"Label11.Caption = "valor (2,2 de la seleccion)"CommandButton2.Caption = "ver ref"

End Sub

Haga un modulo para invocar el formularioSub FORMA01() Load UserForm1 UserForm1.ShowEnd Sub

EJECUTE SU MACRO

Página 4 de 13

Page 5: Guia%09

FUNCIONES CREADAS POR EL USUARIOEjercicio 2: Abra un nuevo libro de Excel al que llamará funciones y cree la función para calcular la siguiente expresión:

)()cos()ln(2)( 3 xsenexxxxg x +−+=

Cree un módulo en vba. Y digite el siguiente código

Function g(x) g = 2 * x ^ 3 + Log(x) - Cos(x) / Exp(x) + Sin(x)End Function

Nota: La sintaxis de la función g(x) en vba es diferente a la de Excel, La función debe de trabajarse para poderla expresar en la sintaxis correcta para vba.

en Excel la sintaxis es: 2*B3^3+LN(B3)-COS(B3)/EXP(B3)+SENO(B3) en VBA la sintaxis es 2 * x ^ 3 + Log(x) - Cos(x) / Exp(x) + Sin(x)

Observe, por ejemplo, que la función logaritmo natural ln(x), en Excel se escribe LN mientras que en VBA se escribe Log.

Para ejecutar la función, copiemos en Excel la tabla de la figura 3:

Figura 3Inserte desde el menú de funciones, la función creada, como se muestra en la figura 4:

Figura 4

Página 5 de 13

Page 6: Guia%09

Copie la función hacia las celdas hacia abajo, el resultado quedará como se muestra en la figura 5.

Figura 5Ejercicio 3: Digite los datos en la hoja dos de su libro “funciones” que se presentan en la Figura 6.

Figura 6Inserte un módulo en vba. Y digite el siguiente código

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

EJECUTE SU FUNCION DESDE EL MENU DE INSERTAR FUNCION Y OBSERVE EL RESULTADO

Página 6 de 13

Page 7: Guia%09

Ejercicio 4: Inserte un nuevo módulo en vba y copie el siguiente código. La función devuelve la suma de dos valores que se le pasan como parámetros 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 = TotalEnd Function

EJECUTE SU FUNCION Y OBSERVE EL RESULTADO

PROBLEMAS PROPUESTOSPARTE I

Ejercicio 1: Abra un Libro de Excel y llámelo “Propuesto9-1”, cree el siguiente formulario de la Figura 7

Figura 7

Página 7 de 13

Page 8: Guia%09

Digíteles el código a los objetos del UserForm1

Private Sub UserForm_Activate()'----------------etiquetaWith Label1 .Caption = "Texto que presenta, puede ser bastante grande....." .BackColor = RGB(255, 0, 0) .Font.Bold = True .Font.Underline = True .Font.Name = "Poor Richard" .Font.Size = 18 .AutoSize = TrueEnd With'---------------------- TextboxTextBox1.SetFocus'----------------- Boton de comandoCommandButton1.Caption = "ver contenido de los TextBox...."CommandButton1.AutoSize = TrueCommandButton2.Caption = "ver seleccion de los OptionButton...."CommandButton2.AutoSize = True

'-----------------ComboBoxWith ComboBox1 .AddItem "primer valor" .AddItem Range("A1").Value .AddItem Range("A2").Value .AddItem Range("A3").Value .AddItem Range("A4").Value .AddItem Range("A5").Value .AddItem Range("A6").ValueEnd With

'------------------ListboxWith ListBox1 .AddItem "el primer valor" For i = 1 To 9 .AddItem ("el " & CStr(i) & " valor") NextEnd With '----------------------------CheckBoxCheckBox1.Caption = "Activado"CheckBox1.Value = True CheckBox2.Caption = "Desactivado" CheckBox2.Value = False

Página 8 de 13

Page 9: Guia%09

'------------------------------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 IntegerStatic colorformG As IntegerStatic colorformB As Integer

colorformR = colorformR + 15colorformG = colorformG + 30colorformB = colorformB + 45

If colorformR >= 255 ThencolorformR = 15colorformG = 30colorformB = 45End If

UserForm1.BackColor = RGB(colorformR, colorformG, colorformB)

End SubPrivate Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)UserForm1.HideEnd Sub

Private Sub UserForm_Terminate()MsgBox "Cerro la ventana!!!!"End SubPrivate Sub CommandButton1_Click() 'para manejo de los TextBoxDim vTB1 As StringDim vTB2 As String

vTB1 = TextBox1.ValueMsgBox "el valor introducido fue: " & vTB1vTB2 = TextBox2.ValueMsgBox "el valor introducido fue: " & vTB2

Página 9 de 13

Page 10: Guia%09

End Sub

Private Sub ComboBox1_Click() ' Para el manejo del ComboBoxMsgBox "el valor seleccionado fue: " & ComboBox1.ValueLabel2.Caption = ComboBox1.ValueLabel2.AutoSize = TrueEnd Sub

Private Sub ListBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)' Para el manejo del ListBox

MsgBox ListBox1.Value

End Sub

Private Sub CheckBox1_Change() ' para el manejo de los CheckBoxSelect Case CheckBox1.Value Case True Label3.Caption = "activado" CheckBox1.Caption = "Activado" Case False Label3.Caption = "Desactivado" CheckBox1.Caption = "Desactivado"End Select

End SubPrivate Sub CheckBox2_Change() ' para el manejo de los CheckBoxSelect Case CheckBox2.Value Case True Label4.Caption = "activado" CheckBox2.Caption = "Activado" Case False Label4.Caption = "Desactivado" CheckBox2.Caption = "Desactivado"End Select

End SubPrivate Sub CommandButton2_Click() ' Para el manejo de los Botones de Opcion

If OptionButton1.Value = True Then MsgBox "eligio la primera opcion del grupo 1" Else If OptionButton2.Value = True Then MsgBox "eligio la segunda opcion del grupo 1" Else MsgBox "eligio la Tercera opcion del grupo 1" End If

Página 10 de 13

Page 11: Guia%09

End If

If OptionButton4.Value = True Then MsgBox "eligio la Primera opcion del grupo 2" Else MsgBox "eligio la Segunda opcion del grupo 2"End If

End Sub

Haga un modulo para invocar el formularioSub FORMA01() Load UserForm1 UserForm1.ShowEnd SubEJECUTE SU MACRO

Ejercicio 2: Abra un nuevo libro y llámelo “EjerFunc” y digite en módulos distintos cada una de las funciones que se presentan a continuación.a) La función calculta el factorial de un número entero

Function facto(n) Dim i As Integer facto = 1 i = 0 Do i = i + 1 facto = facto * i Loop While i <> nEnd Function

b) Copie los datos de la figura 8 y calcule la edad insertando un módulo en vba, donde va a digitar el código que se muestra luego de la figura 8.

Figura 8

Página 11 de 13

Page 12: Guia%09

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 número que indica el día de la semana Rem dado por la función WEEKDAY, que en Excel es =DIASEM(fecha) Static Fnacimiento As Date Factual = Date 'Date es la función 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 & " días" & Chr(10) _ & "Tiene " & CalEdad(Fnacimiento) & " Años", _ Title:="Esta información es correcta siempre que hoy sea " & FactualEnd Sub

'Función que calcula la edad en añosFunction 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 - 1End Function

Ejercicio 3: Abra un nuevo libro y llámelo “PENSIONES” y cree una función que permita permite calcular los descuentos por pensiones a un grupo de empleados, cada descuento varia de acuerdo a la AFP donde el empleado esta afiliado, como se muestra en la siguiente tabla.

ID AFP DESCRIPCION PORCENTAJE %CRE CRECER 6.7COF CONFIA 7.0

IPSFA IPSFA 6.2

Copie los dados de la figura 9.

Página 12 de 13

Page 13: Guia%09

Figura 9Digite el código de la función, en un módulo de vba.

Function Descontar1(vsalario, vpension)

Select Case vpension Case "CRE" Descontar1 = vsalario * 0.067 Case "COF" Descontar1 = vsalario * 0.07 Case "IPSFA" Descontar1 = vsalario * 0.062 Case Else Descontar1 = 0 End Select End Function

Ejecute la función en la columna DESCUENTO AFP y observe el resultado.

PARTE II• Diseñar una Función que permite convertir Kilómetros en Millas y viceversa.

Sabiendo que un millón de Millas equivale a 1.609.344 Kilómetros• Diseñar una Función que permita calcular el descuento aplicado a clientes. Un 3% si

la venta es >= a un millón y un 1% más es menor.

Página 13 de 13


Recommended