Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Macros y formulas en excel, Ejercicios de Informática General

Ejemplos de Macros VBA, y sus ejercicios para resolver los problemas

Tipo: Ejercicios

2020/2021

Subido el 01/03/2021

alberto-bocanegra
alberto-bocanegra 🇲🇽

4 documentos

Vista previa parcial del texto

¡Descarga Macros y formulas en excel y más Ejercicios en PDF de Informática General solo en Docsity! 0 Office Excel Avanzado 2 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 2.1.1 Esquemas Automáticos 1. Creamos la tabla siguiente: 2. Seleccione todo el rango de la tabla, incluyendo las columnas y filas de totales. 3. Vaya a la pestaña DATOS, ubique el icono Agrupar, de un clic en la flecha hacia abajo y seleccione Autoesquema. Nota: Vera que Excel selecciona automáticamente todas las filas seleccionadas y aplica la agrupación correspondiente. 2.1.2 Esquemas manuales 1. Realice la siguiente tabla en Excel: 2. Seleccione un rango de filas como por ejemplo Melgar - Puno. 3. Vaya a la pestaña de DATOS, y busque el icono Agrupar. De un clic en Filas y el botón Aceptar. Nota: Agrupar manualmente significa que usted deberá seleccionar que filas son las que desea esquematizar. Sin embargo si desea agrupar mediante un dato, estas filas deben estar contiguas; si acaso tiene filas dispersadas por toda la tabla, es recomendable hacer una Ordenación primero por la columna que vaya a agrupar para poder realizar el esquema. 5 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 3. =BDPROMEDIO(Rango o nombre de tabla;Número Columna;Criterio). Calcula la media de los valores de la columna Número columna de tabla, que cumplan el criterio. 4. =BDMAX(Rango o nombre de tabla;Número Columna;Criterio). Devuelve el valor máximo de la columna Número columna indicada de tabla, que cumpla la condición del criterio. 5. =BDMIN(Rango o nombre de tabla;Número Columna;Criterio). Devuelve el valor mínimo de la columna Número columna de tabla, que cumpla la condición del criterio. Criterio, son siempre como mínimo dos casillas, una que es el nombre de la columna y otra que es la condición que se ha de cumplir. Número Columna es la posición que ocupa una determinada columna dentro de la tabla. Por ejemplo en ejercicio que se verá posteriormente, Curso ocupa la columna cuatro. 2.4.1 Buscar 1. Realice la siguiente tabla y cambie el nombre la de hoja a Stock: 2. A continuación inserte una nueva hoja y realice la siguiente tabla: 6 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 3. Ubíquese en la posición B5, y vaya a la Barra de fórmulas e ingrese: , para la Unidad de Medida, Ingrese en C5: , haga lo mismo para el Precio Unitario en E5: 4. Realice la multiplicación condicional en Total S/. posición F5: 5. Para el Descuento en F13 realice: 6. Realice las demás operaciones de tal manera que el resultado me muestre de esta forma: 7 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 2.4.2 BuscarV Aprenderá a usar las funciones de búsqueda con que cuenta Excel. 1. Realice la siguiente tabla y renombre la hoja de Excel como Libros: 2. En una segunda hoja de Excel, realice la siguiente tabla: 10 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores La idea es que la fórmula que estamos usando, tome diversos valores y no del resultado. ¿Cuánto debemos pagar modificando la tasa de interés y la cantidad de meses a pagar, por ejemplo a 6, 12 y 24 meses? 3. Seleccionar el rango de la tabla e ir a la pestaña DATOS. Seleccionar la flechita del icono ANALISIS DE HIPOTESOS, para desplegar el menú y seleccionar TABLA DE DATOS. Introduce la celda de entrada para la fila. En este caso es el número de meses para pagar y está en B2 Introduce la celda de entrada para la columna. Que es la tasa de interés anual está en B1. 4. Aplica y ve los resultados. 3.3 Función Si Tenemos la siguiente relación de alumnos con su respectiva calificación final. La condición es: Si la calificación es mayor a 10.5 debe decir APROBADO, si no, debe decir DESAPROBADO. La fórmula es: ¿Cómo modificas para que el primer alumno no salga desaprobado? 11 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 3.4.1 Función Si anidada Tenemos un listado de alumnos y sus calificaciones finales, las condiciones para obtener una beca son: 1. Si la calificación final está entre 19.5 y 10, obtiene un 80% de beca 2. Si la calificación final está entre 18.5 y 19.4, obtiene un 40% de beca 3. Si la calificación final está entre 18.0 y 18.4, obtiene un 25% de beca 4. Si la calificación final es menor a 17.9, no se otorga beca. La sintaxis es la siguiente: 3.4.1 Sumar Si Otra función de condición es la función SUMAR.SI() que permite hacer una suma condicional. La función es: = SUMAR.SI( rango, criterio, rango_suma) Ejemplo: 3.5 Tablas Dinámicas Los informes de tabla dinámica permiten presentar desde distintos puntos de vista una misma información, usando para ello funciones como la suma o el promedio. Tenemos la siguiente tabla de datos: 12 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 1. ¿Cuál es el total que ha vendido cada vendedor? 2. ¿Cuál es el total de la venta por país? 3. ¿Quiénes son los 2 mejores vendedores? 4. ¿Cuáles son las ventas por año? Convertimos la tabla a Tabla dinámica, seleccionamos la tabla y vamos a INSERTAR / Tabla dinámica / Aceptar 1. 2. 3. Vamos a Campos de tabla dinámica, Vendedor / Filtros de valor / 10 mejores 15 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Realizar consultas para: 1. Los IDEmpleados de los trabajadores estén entre 1600 y 1800 2. Los empleados que pertenezcan al Departamento de ingeniería y tenga salario mayor a 30000 3. Liste los empleados con salario menor a 25000 4. Empleados auxiliares que no han tenido vacaciones 5. Empleados que tuvieron permisos por enfermedad 6. Trabajadores con días de vacaciones mayor igual a 15 días 7. El empleado más nuevo en haberse incorporado a la empresa 8. Empleados de la Gerencia Comercial con salario comprendido entre 25000 y 32000 9. Los apellidos de los empleados que inicien con C 10. Quiénes son los 3 mejores empleados pagados 4.2 Tablas Dinámicas 3 Clientes del Banco Abrir la hoja 4.2 del archivo Excel avanzado 3. 16 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Realice una consulta para cada columna. 4.3 Filtros Avanzados Abrir el Archivo Excel Avanzado 3 Hoja 4.3 Y Realice Filtros para: 1. Realice un filtro avanzado para mostrar los pacientes del SIS que sean del C.S. Vallecito. 2. Liste los pacientes de sexo Femenino del C.S. Laraqueri mayor igual a 18 años de edad. 3. Obtenga los pacientes del C.S. Chejoña, con fecha de afiliación del año 2013. 4. Liste los pacientes cuyo número de identificación N° AFILIACV sea mayor o igual a 76484044 y cuyo nombre empiece con L o M. 5. Liste los pacientes que no tienen fecha de baja. 17 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 6. Liste los pacientes que sean mayores a 90 años de edad y sean del C.S. Simón Bolívar. 7. Liste los pacientes que no tengan registrados su DNI y sean del C.S. Puno y sean mayores de 65 años de edad ordenados por Apellidos. 4.4 Tablas Dinámicas 4 Cursos CCI Sea la tabla: Utilizando una tabla dinámica, mostrar la cantidad de cursos que ha realizado cada alumno en los diferentes períodos. 5.1 Macros: Formato de Fuente Nos ubicamos en la primera celda de la hoja 5.1 y vamos a Vista / Ma ros / Gra ar Ma ro…, Dar el Nombre a la macro como FormatoFuente, crear un atajo de teclas C. Y hacemos clic en Aceptar. 20 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA") laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS") lnNumeroBloques = 1 Do lnPrimerDigito = 0 lnSegundoDigito = 0 lnTercerDigito = 0 lcBloque = "" lnBloqueCero = 0 For I = 1 To 3 lnDigito = lyCantidad Mod 10 If lnDigito <> 0 Then Select Case I Case 1 lcBloque = " " & laUnidades(lnDigito - 1) lnPrimerDigito = lnDigito Case 2 If lnDigito <= 2 Then lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito - 1) Else lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque End If lnSegundoDigito = lnDigito Case 3 lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "CIEN", laCentenas(lnDigito - 1)) & lcBloque lnTercerDigito = lnDigito End Select Else lnBloqueCero = lnBloqueCero + 1 End If lyCantidad = Int(lyCantidad / 10) If lyCantidad = 0 Then Exit For End If Next I Select Case lnNumeroBloques Case 1 NumLetras = lcBloque Case 2 NumLetras = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL" & NumLetras) Case 3 NumLetras = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES" & NumLetras) End Select 21 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores lnNumeroBloques = lnNumeroBloques + 1 Loop Until lyCantidad = 0 NumLetras = "" & NumLetras & IIf(tyCantidad > 1, "", "") 'NumLetras = NumLetras & " CON " & Format(Str(lyCentavos), "00") & "/100 " & IIf(ValorEntero = 1, MonedaSingular, MonedaPlural) End Function Guardamos la Hoja de Cálculo como macro e ingresamos datos con la función creada NumLetras(): 5.3 Asociar una Macro creada a un botón (Registro de Datos). Realizamos la siguiente tabla: Vamos a la pestaña DESARROLLADOR / Visual Basic o pulsamos ALT + F11 Creamos el formulario siguiente: 22 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Realizamos doble clic en el botón Agregar e ingresamos el código siguiente: 25 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores B18: RadioButton: Contratado y Nombrado En ambos RadioButton el Formato de control es el siguiente: Al Botón Registrar se le asigna la macro Registro En una segunda hora ingresar datos de AREAS, CARGO y SUELDO. Nombre a la hoja como Datos. 26 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Crea una nueva hoja llamada Planilla y realice lo siguiente: Valores de celdas: E6: G6: J6: Adicione una nueva hoja llamada Constancia, tal como se muestra abajo Valores de celdas: B11: B13: B15: B17: B19: H9: H13: 27 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 5.5 Controles de Formulario Abra el archivo Excel Avanzado 5.5 y crea una nueva hoja llamada: Formulario y creamos lo siguiente: 30 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 31 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Valores de Celdas: D20: D21: G21: D22: D23: D24: D26: D29: 5.6 Manejo de Cadenas Abra el archivo Excel Avanzado 5.6 ingrese las funciones siguientes y explique qué es lo que realiza cada una de las funciones: IZQUIERDA: Código Turno: Nombre: Nombre (Extraer): DERECHA: Código Sección: Apellidos: Apellidos Extraer: EXTRAE DNI: HALLAR POSICION: LARGO: Tamaño: CONCATENAR: Nombre Completo: E_mail: 5.7 Macros con Operadores Crear una Hoja de Cálculo con el nombre de Excel Avanzado 5.7 y en Visual Basic crear el Módulo1 y realizar el siguiente código: Sub NombresyApellidos() ActiveSheet.Range("A4").Value = "Lenin Huayta Flores" ActiveSheet.Range("A4").Font.Bold = True ActiveSheet.Range("A4").Font.Color = RGB(255, 0, 0) End Sub 32 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Sub EntrarValor() Dim Casilla As String Dim Texto As String Casilla = InputBox("En que casilla quiere entrar el valor", "Entrar Casilla") Texto = InputBox("Introducir un texto" & Chr(13) & "Para la casilla" & Casilla, "Entrada de datos") ActiveSheet.Range(Casilla).Value = Texto End Sub Sub Sumar() Dim Numero1 As Integer Dim Numero2 As Integer Numero1 = InputBox("Entrar el primer valor", "Entrada de datos") Numero2 = InputBox("Entrar el primer valor", "Entrada de datos") ActiveSheet.Range("f2").Value = Numero1 + Numero2 End Sub Sub Sumar2() Dim A As Integer Dim B As Integer A = Range("A1").Value B = Range("A2").Value ActiveSheet.Range("A3").Value = A + B End Sub Sub Resta2() Dim A As Integer Dim B As Integer A = Range("A1") B = Range("A2") ActiveSheet.Range("A3").Value = A - B End Sub Sub Multiplicar2() Dim A As Integer Dim B As Integer A = Range("A1") B = Range("A2") ActiveSheet.Range("A3").Value = A * B End Sub Sub Dividir2() Dim A As Integer Dim B As Integer A = Range("A1") B = Range("A2") ActiveSheet.Range("A3").Value = A / B End Sub 35 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores nota3 = Val(InputBox("Ingrese la tercera nota:", "Nota 3")) promedio = (nota1 + nota2 + nota3) / 3 If promedio > 10 Then Select Case promedio Case 11 To 15 MsgBox ("Usted Aprobó con " & promedio & Chr(13) & "Bueno") Case 16 To 18 MsgBox ("Usted Aprobó con " & promedio & Chr(13) & "Muy Bueno") Case 19 To 20 MsgBox ("Usted Aprobó con " & promedio & Chr(13) & "Excelente") End Select Range("A1").Value = promedio Range("A1").Font.Color = RGB(0, 0, 255) Else Range("A1").Value = promedio Range("A1").Font.Color = RGB(255, 0, 0) MsgBox ("Usted Desaprobó con " & promedio) End If End Sub Ejecutamos la macro con la combinación de teclas Alt + F8 Seleccionamos promedio y pulsamos Ejecutar. Inserte un botón llamado Promedio que me permita ejecutar la macro. 36 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 5.11 Macros Estructuras Repetitivas Crear una nueva hoja llamada Excel Avanzado 5.11 e ir a Visual Basic pulsando la combinación de teclas Alt + F11, crear la función siguiente: Ejemplo_1: Sub Ejemplo_1() Dim nota As Integer Dim Media As Single Media = 0 nota = val(InputBox("Entrar la 1 Nota : ", "Entrar Nota")) ActiveSheet.Range("A1").Value = nota Media = Media + nota nota = val(InputBox("Entrar la 1 Nota : ", "Entrar Nota")) ActiveSheet.Range("A2").Value = nota Media = Media + nota nota = val(InputBox("Entrar la 1 Nota : ", "Entrar Nota")) ActiveSheet.Range("A3").Value = nota Media = Media + nota nota = val(InputBox("Entrar la 1 Nota : ", "Entrar Nota")) ActiveSheet.Range("A4").Value = nota Media = Media + nota nota = val(InputBox("Entrar la 1 Nota : ", "Entrar Nota")) ActiveSheet.Range("A5").Value = nota Media = Media + nota Media = Media / 5 ActiveSheet.Range("A6").Value = Media End Sub Ejemplo_2: Sub Ejemplo_2() Dim i As Integer Dim Total As Integer Dim valor As Integer For i = 1 To 10 valor = val(InputBox("Entrar un valor", "Entrada")) Range("A" & i).Value = valor Next i End Sub 37 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Ejemplo_3: Sub Ejemplo_3() Dim i As Integer Dim Total As Integer Dim valor As Integer For i = 1 To 5 valor = val(InputBox("Entrar un valor", "Entrada")) Total = Total + valor Next i ActiveCell.Range("A1").Value = Total End Sub Ejemplo_4: Sub Ejemplo_4() Dim Casilla_Inicial As String Dim i As Integer Dim Fila As Integer, Columna As Integer Casilla_Inicial = InputBox("Introducir la casilla Inicial : ", "Casilla Inicial") ActiveSheet.Range(Casilla_Inicial).Activate Fila = ActiveCell.Row Columna = ActiveCell.Column For i = 1 To 50 ActiveSheet.Cells(Fila, Columna).Value = i Fila = Fila + 1 Next i End Sub 40 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Asignar valor: Sub asignar() Cells(1, 3) = "hola" End Sub Notas: Sub notas() Dim i As Integer Dim numero_notas As Integer Dim valor As Integer Dim acum_valor As Integer Dim promedio As Integer acum_valor = 0 numero_notas = val(InputBox("Ingrese la cantidad de notas")) For i = 1 To numero_notas valor = val(InputBox("Ingrese la nota " & i)) Cells(i, 1) = valor acum_valor = acum_valor + valor Next i promedio = acum_valor / numero_notas Cells(1, 2) = "Promedio = " Cells(1, 3) = promedio End Sub 5.12 Macros Operaciones Aritméticas (Select Case) Creamos un Botón llamado cmdOperaciones y hacemos doble clic el botón estando en Modo diseño Private Sub cmdOperaciones_Click() Dim Valor1 As Variant 41 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Dim Valor2 As Variant Dim Operacion As String Dim Resultado As Variant Valor1 = Val(InputBox("Ingresar Primer Valor", "Valor1")) Range("b1").Value = Valor1 Valor2 = Val(InputBox("Ingresar Segundo Valor", "Valor2")) Range("b2").Value = Valor2 Operacion = InputBox("Ingresar Tipo de Operación (+,-,*,/)", "Operación") Range("a2").Value = Operacion Select Case Operacion Case "+" Resultado = Valor1 + Valor2 Case "-" Resultado = Valor1 - Valor2 Case "*" Resultado = Valor1 * Valor2 Case "/" Resultado = Valor1 / Valor2 End Select Range("b3").Value = Resultado End Sub 5.13 Formularios (Manejo de Formatos Fecha) Ingresamos a Visual Basic y creamos los formularios y códigos siguientes: 42 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Private Sub CommandButton1_Click() MsgBox "La fecha es: " & Date End Sub Private Sub CommandButton2_Click() Dim nuevafecha As Date nuevafecha = Date + 5 MsgBox "Fecha actual + 5 dias: " & nuevafecha End Sub Private Sub CommandButton3_Click() MsgBox "La hora actual es: " & Time() End Sub Private Sub CommandButton4_Click() MsgBox "El año actual es: " & Year(Now) End Sub Private Sub CommandButton5_Click() MsgBox "La fecha y hora actual es: " & Now() End Sub Private Sub CommandButton6_Click() MsgBox "El mes actual es: " & Month(Now) End Sub 45 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores MsgBox (Format(Now, "m/d/yy")) End Sub Private Sub CommandButton3_Click() ' Retorna la fecha actual del sistema en un formato largo definido por el sistema MyStr = Format(Date, "Long Date") MsgBox (MyStr) End Sub Private Sub CommandButton4_Click() Dim MyTime, MyDate, MyStr 'MyTime = #5:04:23 PM# MyTime = Time() 'hora del sistema ' Retorna en el formato "17:4:23". MyStr = Format(MyTime, "h:m:s") 'formato MsgBox (MyStr) End Sub Private Sub CommandButton5_Click() MsgBox (Format(Now, "dddd,mmmm dd,yyyy")) End Sub Private Sub CommandButton6_Click() MsgBox (Format(Now, "d-mmm")) End Sub Private Sub CommandButton7_Click() ' Retorna en el formato "05:04:23 PM". MyTime = Time() 'hora del sistema MyStr = Format(MyTime, "hh:mm:ss AMPM") MsgBox (MyStr) End Sub Private Sub CommandButton8_Click() ' Retorna "jueves, MyStr = Format(Now, "dddd, mmm d yyyy") MsgBox (MyStr) End Sub Private Sub CommandButton9_Click() ' Retorna "jueves, MyStr = Format(Now, "dddd, mmm d yyyy") MsgBox (MyStr) End Sub 46 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Private Sub CommandButton1_Click() Dim cumple As Date Dim an As Double Dim mes As Double cumple = DateSerial(TextBox1.Text, TextBox2.Text, TextBox3.Text) mes = DateDiff("m", cumple, Now) 'diferencia entre f.actual y cumple an = Int(mes / 12) 'int da la parte entera mes = mes - 12 * an 'meses sobrantes Label4.Caption = Str(an) + " Años" + Str(mes) + " Meses" End Sub Enlace entre los botones a los formularios 47 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores En la hoja siguiente: Doble clic en el botón Calcular Edad, pero en el Modo diseño 5.14 Macro Mensajes Insertar un botón llamado Mensajes: Realizar doble clic en ello e ingrese el siguiente código: 50 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores .Offset(0, 5).Value = instituciones_b .Offset(0, 6).Value = atencion End With ActiveCell.Offset(1, 0).Activate Otra_encuesta = MsgBox("Desea ingresar otra encuesta", vbYesNo + vbQuestion, "Tabulación de Encuestas") Loop End Sub En una segunda hoja realice la siguiente tabla: 5.16 Buscar y Copiar con Macros Sea la tabla en la hoja 1 (Datos): 51 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores En la hoja 2 (formulario) construya el siguiente formulario en modo diseño: Nombres de cada control de formulario: 1. Label1 2. Lista_Campos 3. Todo 4. Solo_nombre 5. Copiar_Datos 6. Lista_Comparacion 7. Datos_Buscar 8. Numero 9. Mayusculas Código para cada control de formulario: Option Explicit ' Numero de columnas(campos) de las que consta cada 'registro de la hoja datos 'Num_Columnas Constante Const Num_Columnas = 6 'boton Copiar_Datos_Click() Private Sub Copiar_Datos_Click() Dim i As Integer Dim x As Integer ' Recoger el elemento seleccionado de la lista 'Lista_Campos (Edad, ciudad,fecha...) i = Lista_Campos.ListIndex ' Si i < 0 no está seleccionado ningún elemento If i < 0 Then MsgBox ("Debe Seleccionar un campo de la lista") Else 'asigna a x el elemento seleccionado actualmente en el 'ComboBox Lista_Comparacion (igual, mayor,menor...) x = Lista_Comparacion.ListIndex 'Si x < 0 no está seleccionado ningún elemento If x < 0 Then MsgBox ("Debe Seleccionar uno operador de Comparación") Else ' llamar al procedimiento Proceder 1 2 3 4 5 6 7 8 9 52 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores Call Proceder(i) End If End If End Sub ' Procedimineto Proceder ' Inicia la copia de los datos coincidentes ' Parámetros: ' Columna = Elementos seleccionado de la lista que coincidirá ' con la columna sobre la que se debe buscar Private Sub Proceder(Columna As Integer) 'Columna es una variable de tipo entero del procedimiento 'definicion de variables a utilizar en Proceder Dim r1 As Range, r2 As Range 'Las variables tipo Boolean se presentan como True o False Dim encontrado As Boolean Dim Valor_Comparacion As Boolean Dim Signo As Integer Dim Tipo_Datos As String ' Si el cuadro de texto está vacío, no se busca nada 'Len es una funcion referente al número de caracteres en una cadena If Len(Datos_Buscar.Value) = 0 Then MsgBox ("No hay datos que buscar") Else ' Llama a la funcion borrar_datos 'Borrar los datos actuales Call borrar_datos ' Activar la celda A12 de la Hoja2(datos) y referenciarla con r2 Worksheets(2).Range("A12").Activate Set r2 = ActiveCell ' A12 es la celda donde se copiaran los datos en caso que ' se encuentren '******* 'Activar la celda A2 de Hoja1(formulario) 'y referenciarla con r1 Worksheets(1).Activate Worksheets(1).Range("A2").Activate ' Recorrer todo el rango de datos a Hoja1(formulario) encontrado = False 'IsEmpty: Devuelve un valor de tipo Boolean que 'indica si una variable ha sido inicializada. Do While Not IsEmpty(ActiveCell) 55 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores ' r1 = Celda Origen ' r2 = Celda Destino Private Sub Copiar_Datos_Hojas(r1 As Range, r2 As Range) Dim i As Integer Dim Datos As Variant Dim Final As Integer ' Si Botón Todo Activado, se copian todas las columnas If Todo.Value = True Then Final = Num_Columnas - 1 Else ' Sólo se copian las dos primera columnas Final = 1 End If ' recorrer las columnas del registro y copiar celda a celda For i = 0 To Final ' Si la casilla Mayusculas está activada y el tipo de datos es String If Mayusculas.Value = True And TypeName(r1.Offset(0, i).Value) = "String" Then Datos = UCase(r1.Offset(0, i).Value) Else Datos = r1.Offset(0, i).Value End If r2.Offset(0, i).Value = Datos Next i End Sub Private Sub Datos_Buscar_Change() ' Si el numero de control está activado If Numero.Enabled Then ' No permite coger valores superiores a la propiedad Max If Val(Datos_Buscar.Value) > Numero.Max Then MsgBox ("Valor demasiado grande") Datos_Buscar.Value = Numero.Max Else ' No permite coger valores inferiores a la propiedad Min If Val(Datos_Buscar.Value) < Numero.Min Then MsgBox ("Valor demasiado pequeño") Datos_Buscar.Value = Numero.Min Else Numero.Value = Val(Datos_Buscar.Value) End If End If End If End Sub 56 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 'combobox lista de: edad,ciudad, cantidad, fecha... Private Sub Lista_Campos_Change() Dim i As Integer 'Tipo_Datos variable Dim Tipo_Datos As String 'ListIndex item seleccionado en el combo i = Lista_Campos.ListIndex If i >= 0 Then 'Column(1, i)uno o más elementos en un ComboBox (coloumna 1 fila i) Tipo_Datos = Lista_Campos.Column(1, i) 'Tipo_Datos = "N" (numero) If Tipo_Datos = "N" Then 'activar control de numero Numero.Enabled = True '.Value contenido de un control determinado. If Lista_Campos.Value = "Edad" Then Numero.Min = 0 Numero.Max = 99 Numero.SmallChange = 1 Datos_Buscar = 0 'Name del Textbox Numero.Value = 0 End If If Lista_Campos.Value = "Cantidad" Then Numero.Min = 0 Numero.Max = 500000 Numero.SmallChange = 1000 Datos_Buscar = 0 Numero.Value = 0 End If Else Numero.Enabled = False End If End If End Sub 'control de número Private Sub Numero_Change() 'textbox=valor que selecciona el control de nùmero Datos_Buscar.Value = Numero.Value End Sub 57 UNIVERSIDAD NACIONAL DEL ALTIPLANO Centro de Cómputo e Informática Ing. Lenin Huayta Flores 5.17 Series En la primera hoja creamos una forma y le asignamos la macro ejemplofor En la segunda hoja creamos una forma y le asignamos la macro ejemplofor Sub ejemplodowhile() Dim Nombre As String Dim Lugar As String Dim fecha As Date Dim Telefono As Integer Dim mas_datos As String Call formato 'llama a la función formato GoTo etiqueta 'salta a la etiqueta en este caso a etiqueta etiqueta_error: ' se ejecuta cuando se produzca el error MsgBox ("se ha producido un error") Resume etiqueta_fecha 'se dirige a la etiqueta_fecha para solicitar 'nuevamente el ingreso de la fecha etiqueta: 'marca para saber a donde va la ejecuciòn de un programa On Error GoTo etiqueta_error: 'Activa la rutina de control de errores que comienza
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved