Descarga

Anuncio
Excel Avanzado
SESION 9
VARIABLES
“Cae siete veces, levántate ocho”
(Proverbio Japonés)
Ejercicio 1. Instrucción Offset
1. Realicemos una macro que permita visualizar valores en diferentes celdas
utilizando referencias relativas. Para esto utilizaremos la instrucción Offset(fila,
columna), la cual permite desplazarnos las cantidad de filas y columnas
indicadas.
Sub Relativa()
ActiveCell.Value = "Enero" 'Ingresa un texto en la celda activa
ActiveCell.Offset(0, 3).Select
ActiveCell.Value = "Febrero"
ActiveCell.Offset(2, 0).Select
ActiveCell.Value = "Marzo"
ActiveCell.Offset(0, -3).Select
ActiveCell.Value = "Abril" ActiveCell.FormulaR1C1 = "Junio"
ActiveCell.Offset(0, -5).Range("A1").Select ‘Desplaza cinco columnas a la
izquierda
End Sub
Ejercicio 2. Instrucción Offset
2. Utilizando la instrucción Offset realice un macro que permita mostrar un listado
de los días de la semana verticalmente, partiendo de la celda activa.
Ejercicio 3. Variables e InputBox
3. Realicemos un ejercicio que nos permita ingresar un valor a través de una
ventana, el valor ingresado lo almacenaremos en una variable y lo mostraremos
una celda de la Hoja de Cálculo activa.
Lic. Juan Carlos Aguilar Escobedo
-1-
Excel Avanzado
Sub Entrar_Valor_01()
Dim Texto As String ‘Declaramos una variable llamada Texto de tipo
cadena
‘Chr(13) sirve para que el mensaje se muestre en dos Líneas
‘InputBox(Texto central, Título de la ventana
Texto = InputBox("Introducir un texto " & Chr(13) & "Para la casilla B3",
"Entrada de datos")
‘Mostramos el valor de la variable texto en la celda B3
ActiveSheet.Range("B3").Value = Texto
ActiveSheet.Range("B3").Font.Bold = True ‘para colocar negrita
ActiveSheet.Range("B3").Font.Color = RGB(255, 0, 0) ‘para fuente de color rojo
End Sub
Ejercicio 4. Variables e InputBox
4. Veamos ahora un ejercicio que en vez de ingresar un valor en una celda fija,
demos la posibilidad de especificar en cual celda deberá visualizarse el texto.
Sub Entrar_Valor_02()
‘Declaramos dos variables de tipo cadena
Dim Casilla As String
Dim Texto As String
‘Ingresamos la referencia a una celda mediante InputBox
Casilla = InputBox("En que casilla quiere entrar el valor", "Entrar Casilla")
‘Ingresamos el texto que se visualizará
Texto = InputBox("Introducir un texto " & Chr(13) & "Para la casilla " & Casilla,
"Entrada de datos")
‘Visualizamos en la celda especificada el valor, en este caso el Rango es
‘el valor de la variable Casilla
ActiveSheet.Range(Casilla).Value = Texto
ActiveSheet.Range(Casilla).Font.Bold = True
ActiveSheet.Range(Casilla).Font.Color = RGB(255, 0, 0)
End Sub
Lic. Juan Carlos Aguilar Escobedo
-2-
Excel Avanzado
Ejercicio 5. Variables e InputBox
5. Realice un macro que permita mostrar tres ventanas que permitan ingresar tres
textos, además debe solicitarse el ingreso de una referencia a una celda, donde
a partir de esa referencia debe de visualizar los textos ingresados verticalmente.
Ejercicio 6. Utilización del Option Explicit
6. Cuando colocamos la instrucción Option Explicit forzamos a que se declaren
todas las variables. Visual Basic va a detectar un error cuando encuentre una
variable que no ha sido declarada, es recomendable que nos acostumbremos a
trabajar siempre en esta modalidad. Esta instrucción debe estar declarada al
principio del módulo.
7. Pruebe el programa sin la instrucción Option Explicit. Notaremos que no emite
ningún error ni tampoco un valor adecuado, debido a que no identifica el error
de la variable no declarada testo.
Sub Entrar_Valor_03()
Texto = InputBox("Introducir un texto " & Chr(13) & "Para la casilla B3",
"Entrada de datos")
ActiveSheet.Range("B3").Value = Testo
ActiveSheet.Range("B3").Font.Bold = True
ActiveSheet.Range("B3").Font.Color = RGB(255, 0, 0)
End Sub
8. Agregue ahora la instrucción Option Explicit al principio del módulo, declare la
variable texto y vuelva a ejecutar el programa y notaremos que ahora si nos
identifica el error.
Option Explicit
Sub Entrar_Valor_03()
Dim Texto As String
Texto = InputBox("Introducir un texto " & Chr(13) & "Para la casilla A1",
"Entrada de datos")
ActiveSheet.Range("B3").Value = Testo
ActiveSheet.Range("B3").Font.Bold = True
ActiveSheet.Range("B3").Font.Color = RGB(255, 0, 0)
End Sub
9. Cambie la instrucción de testo por texto para poder corregir el error.
Ejercicio 7. Conversión de datos
Veamos un ejercicio que nos permita conocer las funciones Val() y Str().
Val().- Convierte la cadena a su valor numérico.
Str().- Convierte el número a una expresión cadena.
10.Realice el siguiente programa.
Lic. Juan Carlos Aguilar Escobedo
-3-
Excel Avanzado
Sub Sumando()
Dim Numero1 As Integer
Dim Numero2 As Integer
Numero1 = InputBox("Entrar el PRIMER valor", "Entrada de datos")
Numero2 = InputBox("Entrar el SEGUNDO valor", "Entrada de datos")
ActiveSheet.Range("A1").Value = Numero1 + Numero2
End Sub
11.Ejecute el programa e ingrese dos números. El programa no emitirá ningún
error debido a que el valor ingresado se almacena en una variable del mismo
tipo.
12.Pero ahora vuelva a ejecutar el programa e ingrese una cadena, por ejemplo
“Carlos” y notaremos que ahora nos muestra un error de conversión de tipo de
datos.
13.Una forma para poder dar solución a este problema es utilizar la función Val(), la
cual al encontrar un valor que no tiene valor numérico devuelve el valor de cero.
14.Modifique el programa de la siguiente forma y verifique que ahora no se produce
el error.
Sub Sumando()
Dim Numero1 As Integer
Dim Numero2 As Integer
Numero1 = Val(InputBox("Entrar el PRIMER valor", "Entrada de datos"))
Numero2 = Val(InputBox("Entrar el SEGUNDO valor", "Entrada de datos"))
ActiveSheet.Range("A1").Value = Numero1 + Numero2
End Sub
Ejercicio 8. Objeto Cells(Fila, Columna)
15.El objeto Cells sirve como el objeto range, para referenciar una casilla o rango
de casillas, pero en lugar de utilizar la referencia de la forma A1, B1, X320
utiliza la fila y la columna que ocupa la casilla dentro de la hoja (o objeto
WorkSheet)
16.En cambio el objeto Range(Casilla_Inicial : Casilla_Final), debemos de
especificar referencias de celdas, por ejemplo Range(A1:A10).
17.Veamos el siguiente programa:
Sub instruccion_cells_range()
‘Ingresamos en la celda A1 un texto.
ActiveSheet.Cells(1, 1).Value = "Hola"
‘Ingresamos en el rango C3:D8 un texto
Range(Cells(3, 3), Cells(8, 4)).Value = "Hola"
‘Tomando como base el rango A5:B10 ingresamos en la 2da fila y primera
Lic. Juan Carlos Aguilar Escobedo
-4-
Excel Avanzado
‘columna un texto, es decir en la celda A6
Range("A5:B10").Cells(2, 1).Value = "Hola"
End Sub
Ejercicio 7. Variables de objetos
18.Una variable objeto sirve para hacer referencia a un objeto, esto significa que
podemos acceder a las propiedades de un objeto e invocar a sus métodos a
través de la variable en lugar de hacerlo directamente a través del objeto.
19.Posiblemente no se utilice demasiado esta clase de variables (está claro que
esto dependerá de las preferencias del programador), pero hay casos en los que
no hay más remedio que utilizarlas, por ejemplo en estructuras For Each …
Next como veremos, o cuando sea necesario continuar funciones que devuelvan
rangos, referencias a hojas, etc.
20.Para poder declarar una variable objeto se utiliza también la palabra Dim de la
siguiente forma:
Dim Var_Objeto as Objeto
21.Veamos un ejemplo que permita crear una variable de objeto Worksheet y poder
asignarle diferentes Hojas de cálculo.
Sub variables_objetos()
Dim hoja As Worksheet ‘Creamos una variable al objeto Hoja de cálculo
Set hoja = ActiveSheet ‘Asignamos a la variable la Hoja de cálculo activa
hoja.Range("A1:A10") = "HIPOLITO" ‘Modificamos el contenido del rango
A1:A10
Set hoja = Worksheets(1) ‘Asignamos la Hoja de Cálculo 1 utilizando el
array
‘de Worksheets
hoja.Range("C1:C5") = "EN LA HOJA 1"
Set hoja = Worksheets(2) ‘Asignamos la Hoja de Cálculo 2
hoja.Range("C1:C5") = "EN LA HOJA 2"
Set hoja = Worksheets(3) ‘Asignamos la Hoja de Cálculo 3
hoja.Range("C1:C5") = "EN LA HOJA 3"
End Sub
Lic. Juan Carlos Aguilar Escobedo
-5-
Excel Avanzado
Ejercicio 7. Variables de objetos
22.Ahora tratemos de llenar el rango de A1 a B10 con la palabra “Hola” y después
poner negrita, observe como se asigna una variable objeto y luego como se
trabaja con esa variable de la misma forma que trabajaría directamente sobre el
objeto.
Sub variables_objetos2()
‘Creamos una variable objeto de tipo
Range
Dim r As Range
‘Asignamos a la variable un rango
específico
Set r = ActiveSheet.Range("A2:B5")
‘Modificamos sus propiedades utilizando
la
‘variable
r.Value = "Hola"
r.Font.Bold = True
End Sub
Lic. Juan Carlos Aguilar Escobedo
-6-
Descargar