Professional Documents
Culture Documents
NÚCLEO DE ANZOÁTEGUI
Macros Simples
Definición
Macros Inteligentes
Definición
Estructuras básicas de programación en Visual Basic
Asignando datos a celdas desde una Macro
Manejo de Variables
Qué son las Variables
Declaración de Variables
iii
APÉNDICES
Apéndice A: Funciones de Manejo de Datos
Apéndice B: Expresiones y Operadores
Apéndice C: Propiedades de los Formularios
Apéndice D: Propiedades de los Controles
Apéndice E: Eventos de los Objetos
iv
Sección
USANDO EL GRABADOR DE MACROS
1
CONCEPTOS BÁSICOS
MACROS SIMPLES
DEFINICIÓN:
Son las que repiten una serie de pasos ejecutados durante la grabación, sin
toma de decisiones ni estructuras personalizadas de programación.
5
1. Ampliar el alto de la fila #1
a) Seleccionar toda la fila # 1 (Clic en el identificador de fila)
b) Clic en la tarjeta: Inicio I Sección: Celdas / Menú: Formato / Opción:
Alto de Fila...
c) Cambiar el valor del campo Alto de Fila: por el doble.
6
d) Clic en Aceptar.
6. Finalizar la grabación del macro: clic en botón Detener grabación ( ),
buscarlo en: Tarjeta: Vista I Sección: Macros o en la barra de estado.
7. Probar el macro:
a) Seleccionar la celda B1.
b) Escriba su Apellido y dele entrada sin mover el puntero: Clic en
c) Ejecutar macro: Control (ctrl.) + Mayúscula () + C
7
1. Clic en la Tarjeta: Vista I Sección: Macros / Opción Ver Macros
MACROS INTELIGENTES
DEFINICIÓN:
Macros con estructura lógica de programación, que pueden tomar decisiones e
8
interactuar con el usuario, lo que garantiza su flexibilidad.
9
LOOP
DO
Bloque de Instrucciones
LOOP WHILE <Condición>
DO
Bloque de Instrucciones
LOOP UNTIL <Condición>
Ejercicio 3: Generar una macro que resalte en color amarillo, el fondo de las
celdas cuyo contenido sea mayor a 50.000, seleccionadas de entre un bloque
de datos aislados.
1. Generar data según se indica (Generar fórmula F1 y copiarla según flechas):
10
2. Calcule el TOTAL GASTOS de Enero en la celda C9, seleccionando la
Tarjeta: Fórmulas I Sección: Biblioteca de funciones / Botón
3. Rellenar hacia la derecha la fórmula de TOTAL GASTOS, hasta completar
los datos del mes de Febrero y Marzo.
11
b) Definir campos y hacer clic en Aceptar
c) Seleccionar la celda: C6.
d) Clic en la Tarjeta: Inicio I Sección: Celdas / Menú Formato I Opción
Formato de celdas...
12
TRADUCCIÓN DEL CÓDIGO
Sub ResaltarCelda() Inicio del procedimiento ResaltarCelda
Range("C6").Select Selección de una celda (C6) con referencia absoluta
Do Until ActiveCell = "" Hacer hasta que la celda activa esté vacía
(bucle1)
Do Until ActiveCell = "" Hacer hasta que la celda activa esté vacía
(bucle2)
If ActiveCell > 50000 Then Si la celda activa es mayor que 50000
entonces
With Selection.Interior Con el interior de la selección actual aplicar
.Pattern = xlSolid Patrón de relleno sólido
.Color = 65535 Índice de color # 65535 (Amarillo)
End With Fin del bloque Con
End If Fin del bloque Si
ActiveCell.Offset(1, 0).Range("a1").Select Selección relativa a la celda
activa: celda ubicada 1 fila
abajo y en la misma columna
Loop Repetir bucle2
ActiveCell.Offset(-1,1).Range("a1").Select Selección relativa a la celda
activa: celda ubicada 1 fila
arriba y 1 columna a la
derecha
13
Selection.End(xlUp).Select Selecc. la última celda del bloque hacia
arriba
Loop Repetir bucle1
End Sub Fin del procedimiento ResaltarCelda
14
2. Grabar con la grabadora de macros, las funciones de teclado y menú propios
del Excel, que se desean automatizar:
a) Clic en la Tarjeta: Vista I Sección: Macros / Opción Grabar macro
b) Definir campos según se indica:
15
7. Añadir las instrucciones de control y los cambios requeridos, a la macro,
según se muestra:
16
Selection.NumberFormat = "0.00" Aplicar formato de 2 decimales fijos
a la selección actual
End Sub Fin del procedimiento Promediar
MANEJO DE VARIABLES
17
5. Single: Admite valores decimales con precisión simple (4 bytes)
6. Double: Admite valores decimales con precisión doble (8 bytes)
7. Currency: Válido para valores de tipo moneda
8. String: Válido para cadena de caracteres
9. Date: Válido para datos tipo fecha (permite operar con ellas)
10. 0bject: direcciones de 32 bits (4 bytes) que hacen referencia a objetos
11. Variant: Tipo genérico, puede almacenar información numérica, de un string
o de fecha.
Es importante resaltar que no es imprescindible declarar todas las variables
que se usan en cualquier macro. Cuando creamos una palabra nueva y la
usamos como variable, Visual Basic la asume por defecto del tipo Variant. Lo
cual nos simplifica el trabajo y nos ofrece una gran flexibilidad en el manejo de
los datos, pero a costa de perder parte del control total sobre ellos, que
siempre es deseable.
Ejercicio 5: Generar una macro que desarrolle una tabla de conversiones, que
tome los “N” primeros valores enteros múltiplos de 5, en grados centígrados
(partiendo de O°C), y los traduzca a grados Fahrenheit (°F=9/5°C+32) o grados
Kelvin (°K=°C+273). La macro debe ordenar todos los datos en forma
columnar, según se muestra en la ilustración anexa; y adaptarse al valor de "N”
y el tipo de traducción, que indique el usuario en las celdas correspondientes.
1. Generar data según se indica (solo los datos en negritas):
18
e) Seleccionar celda E1 (tipo de conversión: °Fahrenheit o °Kelvin)
f) Seleccionar celda D4 (título de grados a convertir en la tabla)
g) Finalizar la grabación: clic en botón Detener grabación ( )
3. Editar el macro:
a) Clic en la Tarjeta: Vista I Sección: Macros / Opción Ver Macros
b) Clic en el botón Modificar (previa selección del nombre de macro:
Conversión)
4. Añadir las instrucciones de control al macro:
19
y una columna a la
izquierda
centigrado = (c - 1) * 5 Asignar a la variable centigrado el resultado de
la fórmula (c -1 ) * 5
ActiveCell.FormulaR1C1 = centigrado Escribir en la celda activa el
contenido de la variable
centigrado
ActiveCell.HorizontalAlignment = xlCenter Centrar horizontalmente el
contenido de la celda activa
ActiveCell.Offset(0, 1).Range("A1").Select Selección relativa a la celda
activa: ubicada en la misma
fila y una columna a la
derecha
If tipo = "KELVIN" Then Si el contenido de la variable tipo es igual a
KELVIN entonces
ActiveCell.FormulaR1C1 = centigrado + 273 Escribir en la celda activa
el resultado de sumar 273
al contenido de la variable
centigrado
Else De lo contrario (si tipo no es igual a KELVIN)
ActiveCell.FormulaR1C1 = (centigrado * 9 / 5) + 32 Escribir en la celda
activa el resultado
de multiplicar por
9/5 el contenido de
la variable
centigrado y
sumarle 32
21
Sección
MANEJO DE OBJETOS
2
CONCEPTOS BÁSICOS
PROGRAMACIÓN DE EVENTOS SOBRE OBJETOS:
El Visual Basic es un lenguaje orientado a la programación de eventos sobre
objetos. Esto significa que su filosofía principal en el desarrollo de programas,
se basa en la posibilidad de asignar código a los diferentes eventos que deban
manejarse o ejecutarse, sobre los objetos contemplados en el diseño de una
aplicación; de tal manera, que dichos códigos se ejecuten en el instante en que
el usuario del programa produzca los eventos sobre tales objetos.
QUÉ ES UN EVENTO:
Un evento es una acción (hacer clic, arrastrar, pulsar una tecla, cargar una
ventana, etc.) que se realiza sobre un objeto y que provoca la ejecución del
procedimiento (código) asociado a ese suceso en particular.
QUÉ ES UN OBJETO:
Un objeto es un elemento que desempeña una función y que es utilizado para
lograr un objetivo preestablecido; no importando, como fueron construidos ni
cómo funcionan, sino solamente el saber para qué se usan.
22
operación sobre el objeto. Los métodos pueden requerir información adicional
en forma de argumento. Su sintaxis es la siguiente:
Objeto. Método Arg1, Arg2 ... ArgN
A veces, distinguir entre un método y una propiedad es una labor imprecisa.
Ya que hay métodos que pueden cambiar propiedades, por ejemplo: el método
ChartWizard puede cambiar algunas propiedades del gráfico; y hay
propiedades que pueden implicar acciones, por ejemplo: en el Excel la acción
de esconder una hoja de cálculo es establecer una propiedad (ya que la hoja
de cálculo todavía está y puede volver a cambiarse su estatus).
Afortunadamente, la mayoría de las veces no tendremos que preocuparnos de
estos deslindes; pues, el Excel cuenta con herramientas interactivas que nos
permiten encontrar los métodos y propiedades de los objetos, sin necesidad de
saber cuál es cuál.
23
Para hacer referencia a un elemento individual dentro de una colección, se
puede utilizar su posición, su nombre o su estatus. A continuación listaremos
los ejemplos más comunes de cada método:
1. Llamando a un libro o a una hoja de cálculo, individualmente, por su
posición o por su nombre (para ambos casos se usa el método Ítem; el cual
crea un enlace entre el elemento individual y la colección a la cual
pertenece, a través de un argumento simple, que puede ser la posición del
elemento o algún rótulo que lo identifique):
a) WorkBooks.Item(#).Close (Cerrar el libro que está en la posición #)
b) Sheets.ltem(#).Delete (Borrar la hoja de cálculo que está en la
posición # del libro de trabajo activo)
c) WorkBooks.ltem("LibroX”).Activate (Activar el libro de nombre LibroX)
d) Sheets.ltem("HojaX”).Select (Seleccionar la hoja de nombre
HojaX del libro de trabajo activo)
2. Llamando a un libro o a una hoja de cálculo, individualmente, por su estado
o estatus (para este caso se usa básicamente el prefijo Active):
a) ActiveWorkBook.Close (Cerrar el libro de trabajo activo)
b) ActiveWorkBook.Saved = False (Asignar a la propiedad Saved del libro
de trabajo activo, el valor False)
c) ActiveSheet.Paste (Pegar los datos previamente copiados
en la hoja activa del libro de trabajo
activo)
d) ActiveSheet.Name = "HojaX" (Asignar a la propiedad Name de la
hoja activa del libro de trabajo activo, el
valor HojaX)
Ejercicio 6: Generar una macro que añada una hoja al final de la colección de
hojas de cálculo del libro activo, y genere en ella un encabezado genérico a
partir de la celda A1; luego se regrese a la hoja inmediata anterior, la cual
contiene los datos de las facturas en trámite del último mes, corte de ella las
filas correspondientes a las facturas no canceladas y simultáneamente las valla
pegando a la nueva hoja, en un proceso iterativo que culmine cuando se revise
la última factura de la lista.
1. Generar los datos que se indican, en la Hoja3:
24
2. Grabar con la grabadora de macros, las funciones de teclado y menú
propios del Excel, que se desean automatizar:
a) Clic en la Tarjeta: Vista I Sección: Macros / Opción Grabar macro
Definir campos según se indica:
25
j) Pulsar la tecla Enter
k) Arrastrar desde el punto caliente de la celda C2 hasta la celda D2
l) Cortar el contenido de la celda D2 y pegarlo en la celda C2
m)Seleccionar la Hoja de cálculo # 3: clic en la etiqueta Hoja3
n) Seleccionar la fila correspondiente a la primera factura no cancelada
o) Clic en el botón Copiar : Tarjeta: Inicio I Sección: Portapapeles
p) Seleccionar la Hoja de cálculo # 4: clic en la etiqueta Hoja4
q) Clic en la celda A4
r) Pulsar la tecla Enter
s) Seleccionar la Hoja de cálculo # 3: clic en la etiqueta Hoja3
t) Clic en la Tarjeta: Inicio I Sección: Celdas / Opción Eliminar
u) Finalizar la grabación: clic en botón Detener grabación ( )
3. Editar el macro:
a) Clic en la Tarjeta: Programador I Sección: Código / Opción Macros
b) Clic en el botón Modificar (previa selección del nombre de la macro:
Hoja_Facturas)
4. Añadir las instrucciones de control y modificar las instrucciones necesarias
para cumplir con los requerimientos del ejercicio:
26
Sub Hoja_Facturas() Inicio del procedimiento Hoja_Facturas
n = Sheets.Count Hacer a la variable n igual al número de hojas de
hojas de cálculo que existen en el libro de trabajo
activo.
Sheets.Add After:=Sheets(n) Añadir una nueva hoja de cálculo al libro
de trabajo activo, después de la última
hoja existente.
Sheets.Item(n).Select Seleccionar la hoja de cálculo ubicada en la
penúltima posición.
Rows("1:3").Select Seleccionar las 3 primeras filas de la hoja de cálculo
activa.
Selection.Copy Copiar la selección.
Sheets.Item(n + 1).Select Seleccionar la hoja de cálculo ubicada en la
última posición.
TRADUCCIÓN DEL CÓDIGO (CONTINUACIÓN)
ActiveSheet.Paste Pegar en la hoja activa la selección copiada
Application.CutCopyMode = False Desactivar la selección copiada
Range("C2").Select Seleccionar la celda C2 de la hoja de cálculo activa
Selection.AutoFill Destination:=Range("C2:D2"),
Type:=xlFillDefault Extender una posición a la derecha la serie C2
(Meses)
Range("C2:D2").Select Seleccionar rango C2:D2
Range("D2").Select Seleccionar celda D2
Selection.Cut Cortar el contenido de la selección (celda D2)
Range("C2").Select Seleccionar celda C2
ActiveSheet.Paste Pegar la selección cortada en la celda activa (C2) de
la hoja activa
Range("a4").Select Seleccionar celda A4 de la hoja de cálculo activa
Sheets.Item(n).Select Seleccionar la hoja de cálculo ubicada en la
penúltima posición
Range("a4").Select Seleccionar celda A4 de la hoja de cálculo activa
Do Until ActiveCell = "" Hacer hasta que la celda activa esté vacía
ActiveCell.Offset(0, 4).Range("a1").Select Seleccionar la celda ubicada
en la misma fila y 4
columnas a la derecha de la
celda activa
If ActiveCell = "" Then Si la ceda activa está vacía entonces hacer
27
ActiveCell.EntireRow.Select Seleccionar la fila completa de la celda
activa
Selection.Copy Copiar el contenido de la selección
Sheets.Item(n + 1).Select Seleccionar la hoja de cálculo ubicada en la
última posición
ActiveSheet.Paste Pegar en la celda activa de la hoja de cálculo activa el
contenido de la selección copiada
Application.CutCopyMode = False Desactivar la selección copiada
ActiveCell.Offset(1, 0).Range("a1").Select Seleccionar la celda ubicada
una celda debajo de la celda
activa
Sheets.Item(n).Select Seleccionar la hoja de cálculo ubicada en la
penúltima posición
Selection.Delete Shift:=xlUp Eliminar la selección (fila) y mover los
datos en las celdas subsiguientes hacia
arriba
ActiveCell.Offset(-1, 4).Range("a1").Select Seleccionar la celda ubicada
1 fila hacia arriba y 4
columnas a la derecha de la
celda activa
TRADUCCIÓN DEL CÓDIGO (CONTINUACIÓN)
End If Fin del bloque Si
ActiveCell.Offset(1, -4).Range("a1").Select Seleccionar la celda ubicada
1 fila hacia abajo y 4
columnas a la izquierda de
la celda activa
Loop Repetir bucle HACER HASTA
Sheets.Item(n + 1).Select Seleccionar la hoja de cálculo ubicada en la
última posición
End Sub Fin del procedimiento Hoja_Facturas
28
de celdas o un rango 3D. Estos objetos son probablemente la clase de objetos
más importante en Excel. Los valores se introducen en rangos, las fórmulas
también. Los informes son rangos formateados. Los gráficos se construyen a
partir de los números incluidos en rangos. Los dibujos se colocan encima de
los rangos. Las tablas dinámicas se manipulan sobre rangos. De tal manera
que, el trabajo básico en Excel se circunscribe al manejo de objetos Rango. Lo
cual justifica las múltiples propiedades y facilidades que nos ofrece el Excel,
para trabajar con ellos.
PROPIEDAD RANGE:
La propiedad Range es, consecuencialmente, la principal propiedad que
devuelve un objeto rango en el Excel. Puede definirse de dos formas: a través
de dos argumentos correspondientes a sus límites, o con un único argumento
formado por algo que el Excel pueda interpretar como la dirección de un rango.
Como se muestra en los siguientes ejemplos:
1. Range(“A1", "B2").Select (Excel selecciona el rango desde A1 hasta B2)
2. Range(ActiveCell, "C4”).Select (Excel selecciona el rango desde la celda
activa hasta C4)
3. Range(“D5:E6").Select (Excel selecciona el rango desde D5 hasta E6)
4. Range(“F7:G8").Name = “R_Prueba" (Asignar el nombre R_Prueba al
rango F7:G8)
5. Range(“R_Prueba").Select (Excel selecciona el rango R_Prueba F7:G8)
6. Range(“H9").Select (Excel selecciona la celda H9)
7. ActiveCell.Range(“B3").Select (Selecciona la celda ubicada 1 columna a
la derecha. y 2 filas debajo de la celda
activa)
8. Range(“R_Prueba").Range(“A1").Select (Excel selecciona la celda F7, la
primera del rango “R_Prueba”)
29
a) Range("A1:E4").Cells.Count (Excel cuenta el número de celdas dentro
del rango A1:E4)
b) Cells(1,4).Select (Excel selecciona la celda D1, celda
ubicada en la primera fila y cuarta columna
de la hoja de cálculo)
2. Propiedad Rows: devuelve un conjunto de filas con las mismas cualidades
de referencia que la propiedad anterior. Ejemplo:
a) A = Rows.Count (Excel asigna a la variable A el número
total de filas que contiene la hoja de
cálculo)
")
b) Range("A1:E4 .Rows(2).Select (Excel selecciona la segunda fila del
rango, desde A2 hasta E2)
3.Propiedad Columns: devuelve un conjunto de columnas, que a pesar de lo que
pudiéramos pensar, constituye un objeto de la misma clase (objeto rango) que el
de las dos anteriores. Ejemplo:
a) Columns(2).Select (Excel selecciona toda la columna B)
b) Colums(Columns.Count).Select (Excel selecciona la última columna de
la Hoja de cálculo, la columna IV)
30
a) Range("C3:E6").EntireColumn.Select (Excel selecciona el rango de
columnas C:E)
b) Range("C3:E6”)EntireRow.Select (Excel selecciona el rango de
filas 3:6)
Ejercicio 7: Generar una macro que explore la hoja de cálculo asociada, para
determinar el rango de datos numéricos, correspondientes a los resultados de
las pruebas de Bowling (lista de tamaño variable), y le asigne un nombre; para
finalmente hacer una revisión exhaustiva de todas las celdas de dicho rango, y
resaltar los valores por debajo del promedio en color rojo (formato fuente).
1. Generar los datos según se indica:
31
c) Clic en Aceptar (se inicia la grabación)
d) Seleccionar la celda A5 (clic sobre la celda)
e) Pulsar las teclas Fin + (flecha del cursor hacia a la derecha)
f) Pulsar las teclas Fin + (flecha del cursor hacia abajo)
g) Clic en la Tarjeta: Inicio I Sección: Celdas / Menú Formato I Opción
Formato de celdas... I Tarjeta: Fuente I Color: Rojo y hacer clic en
Aceptar
h) Finalizar la grabación: clic en botón Detener grabación ( )
3.Editar el macro:
a) Clic en la Tarjeta: Vista I Sección: Macros / Opción Ver Macros
b) Clic en el botón Modificar (previa selección de macro:
RangoResultados)
c) Añadir las instrucciones de control y modificar las instrucciones
necesarias para cumplir con los requerimientos del ejercicio:
32
ci = ActiveCell.Address Asignar a la variable ci la dirección de la celda
activa (celda inicial del rango de datos
numéricos)
Range(ci, cf).Name = "Datos" Asignar el nombre de Datos al rango
ci:cf
For n = 1 To Range("Datos").Cells.Count Para n = 1 hasta el valor
correspondiente al número
de celdas del rango Datos
Sum = Sum + Range("Datos").Cells(n).Value Acumular en la variable
Sum el valor de las
celdas del rango Datos
Next Incrementar el contador n y repetir el bucle Para
Prom = Sum / Range("Datos").Cells.Count Asignar a la variable Prom
el valor de la variable Sum
dividido entre el número de
celdas del rango Datos
(promedio del rango Datos)
For c = 1 To Range("Datos").Cells.Count Para c = 1 hasta el valor
correspondiente al número
de celdas del rango Datos
Range("Datos").Cells(c).Select Seleccionar la celda número c del
rango Datos
If ActiveCell.Value < Prom Then Si el valor de la celda activa es menor
que el valor de la variable Prom
Entonces Hacer:
Selection.Font.ColorIndex = 3 Asignar al color de la fuente de la
selección el valor 3 (Rojo)
Else De lo contrario Hacer:
Selection.Font.ColorIndex = 1 Asignar al color de la fuente de la
selección el valor 1 (Negro)
33
ASISTENCIA EN LA EXPLORACIÓN DE OBJETOS
DEFINICIÓN:
Como hemos podido notar en los distintos ejemplos y ejercicios, que hemos
revisado en esta sección. Existe un abundante número de objetos en el Excel,
que junto a la gran variedad de propiedades y métodos que combinan,
constituyen un conjunto de herramientas enorme; que naturalmente no
podemos abarcar eficientemente, solo con el uso de nuestra memoria, ni con
asistentes rígidos como manuales o textos. Afortunadamente el Visual Basic
para aplicaciones, cuenta con varios asistentes automáticos, que gracias a su
alto diseño gráfico, nos permiten un manejo flexible de todos esos elementos.
Entre estos asistentes podemos resaltar, como imprescindibles, los siguientes:
La ayuda del Excel Visual Basic, las Listas Automáticas y el Examinador
de Objetos.
Ejercicio 8: Usando la ayuda del Excel Visual Basic, ubique las propiedades
del objeto Names (Conjunto de todos los objetos Name del libro o la
aplicación):
1. Pulsar la tecla F1 desde el editor de Visual Basic del Excel, y tipear dentro
de la caja de búsqueda el nombre del objeto a consultar (names):
34
3. Hacer Clic en el resultado de búsqueda: Names(objeto), y bajar hasta el
final de la ventana de ayuda:
35
4. Tipear el signo de igualdad (=) después de una propiedad con un número
limitado de valores: para mostrar una lista enumerada de valores que aplica
a la propiedad precedente.
Ejercicio 9: Genere las dos siguientes líneas de código, con la ayuda de las
lista
automáticas: ActiveWindow. WindowState = xlMinimized
Windows.Arrange xlArrangeStyleCascade
1. Pulsar CTRL. + ESPACIADOR, y luego haga clic sobre el objeto
ActiveWindow:
36
7. Repetir los pasos del 1 al 4 para generar con las listas automáticas la
instrucción Windows.Arrange, y luego tipear un espacio en blanco.
8. Pulsar la tecla ESC, para despejar la lista enumerada, y hacer doble clic
sobre la opción xlArrangeStyleCascade, para culminar la instrucción:
Ejercicio 10: A través del Examinador de objetos del Excel Acceda a los
argumentos opcionales del método Copy del objeto Range.
1. Active un módulo.
2. En el menú Ver, elija Examinador de objetos (F2), o haga Clic en el botón
Examinador de Objetos ( ) en la barra de herramientas del Microsoft
Visual Basic
3. Seleccione en la lista Proyecto/Biblioteca la opción: Excel:
37
4. Seleccione de la lista Clases, la opción Range (hacer clic dentro de la lista
y pulsar la tecla R hasta ubicar el objeto requerido).
38
6. Vea información acerca de la clase o miembro que seleccionó en la sección
Detalles (parte inferior de la ventana). Para este ejemplo podremos leer el
argumento Destination, el cual se identifica como opcional, ya que en la
sintaxis se muestra dentro de corchetes.
7. Utilice el botón Ayuda ( ) para mostrar el tema de Ayuda para la clase o
el miembro que seleccionó.
39
Sección
MACROS INTERACTIVAS
3
CONCEPTOS BÁSICOS
40
aproximadamente 1024 caracteres, según el ancho de los
caracteres utilizados. Si prompt consta de más de una línea, puede
separarlos utilizando un carácter de retorno de carro (Chr(13)), un
carácter de avance de línea (Chr(10)) o una combinación de los
caracteres de retorno de carro-avance de línea (Chr(13) y Chr(10))
entre cada línea y la siguiente.
Title: Opcional. Cadena de caracteres que se muestra en la barra de
título del cuadro de diálogo. Si omite title, en la barra de título se
coloca el nombre de la aplicación.
Default: Opcional. Cadena de caracteres que se muestra en el cuadro de
texto como respuesta predeterminada cuando no se suministra una
cadena. Si omite default, se muestra el cuadro de texto vacío.
Xpos: Opcional. Expresión numérica que especifica, en twips, la distancia
en sentido horizontal entre el borde izquierdo del cuadro de diálogo
y el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de
diálogo se centra horizontalmente.
Ypos: Opcional. Expresión numérica que especifica, en twips, la distancia
en sentido vertical entre el borde superior del cuadro de diálogo y el
borde superior de la pantalla. Si se omite ypos, el cuadro de diálogo
se coloca a aproximadamente un tercio de la altura de la pantalla,
desde el borde superior de la misma.
Helpfile: Opcional. Cadena de caracteres que identifica el archivo de Ayuda
que se utilizará para proporcionar ayuda interactiva para el cuadro
de diálogo. Si se especifica helpfile, también deberá especificarse
context.
Context: Opcional. Expresión numérica que es el número de contexto de
Ayuda asignado por el autor al tema de Ayuda correspondiente. Si
se especifica context, también deberá especificarse helpfile.
41
TRADUCCIÓN DEL CÓDIGO (MODIFICACIONES EN NEGRITAS)
Sub ResaltarCelda() Inicio del procedimiento ResaltarCelda
Range("C6").Select Selección de una celda (C6) con referencia absoluta
Micolor = InputBox("Resaltar Celda con
Color: Amarillo(6), Azul(5) O Rojo(3)") Asignar a la variable Micolor el
valor que devuelve la caja de
diálogo InputBox (6, 5 ó 3).
Do Until ActiveCell = “” Hacer hasta que la Celda Activa esté vacía (bucle1)
Do Until ActiveCell = “” Hacer hasta que la Celda Activa esté vacía (bucle2)
If ActiveCell > 50000 Then Si la Celda Activa es mayor que 50000 entonces
With Selection.Interior Con el interior de la selección actual Aplicar
.Colorlndex = Micolor Índice de color igual al valor almacenado en la
variable Micolor
.Pattern = xlSolid Patrón del relleno Sólido
End With Fin del bloque Con
End If Fin del bloque Si
ActiveCeII.Offset(1, 0).Range("a1").Select Selección relativa a la celda activa:
celda ubicada 1 fila hacia abajo y o
columnas a la derecha
Loop Repetir bucle2
ActiveCeII.Offset(-1, 1).Range("a1").Select Selección relativa a la celda activa:
celda ubicada 1 fila hacia arriba y 1
columna a la derecha
Selection.End(xIUp).Select Seleccionar la última celda con datos del bloque, en
la dirección hacia arriba.
Loop Repetir bucle 1.
End Sub Fin del procedimiento ResaltarCelda.
42
5. Pulsar la tecla Enter o hacer clic en el botón Aceptar para ver los
resultados.
6. Repetir los pasos: 3, 4 y 5 para probar otro color.
MSGBOX:
Muestra un mensaje en una caja de diálogo, espera a que el usuario haga clic
en un botón y devuelve un tipo Integer correspondiente al botón elegido por el
usuario.
Sintaxis:
MsgBox(prompt[, buttons][, title][, helpfile, context])
En donde:
Prompt: Requerido. Cadena de caracteres (String) que representa el prompt
en la caja de diálogo. La longitud máxima del prompt es de
aproximadamente 1024 caracteres, según el ancho de los
caracteres utilizados. Si el prompt consta de más de una línea,
puede separarlos utilizando un carácter de retorno de carro
(Chr(13)) o un carácter de avance de línea (Chr(10)), o una
combinación de caracteres de retorno de carro - avance de línea
(Chr(13) y Chr(10)) entre cada línea y la siguiente.
Buttons: Opcional. Expresión numérica que corresponde a la suma de los
valores que especifican el número y el tipo de los botones que se
pretenden mostrar, el estilo de icono que se va a utilizar, la
identidad del botón predeterminado y la modalidad del cuadro de
mensajes. Si se omite este argumento, el valor predeterminado para
buttons es 0.
Title: Opcional. Cadena de caracteres que se muestra en la barra de
título de la caja de diálogo. Si se omite title, en la barra de título se
coloca el nombre de la aplicación.
Helpfile: Opcional. Cadena de caracteres que identifica el archivo de Ayuda
que se utiliza para proporcionar ayuda interactiva en la caja de
diálogo. Si se especifica helpfile, también se debe especificar
contexto
Context: Opcional. Expresión numérica que es igual al número de contexto
de Ayuda asignado por el autor al tema de Ayuda correspondiente.
Si se especifica context, también se debe especificar helpfile.
43
TRADUCCIÓN DEL CÓDIGO (MODIFICACIONES EN NEGRITAS)
Sub ResaltarCelda() Inicio del procedimiento ResaltarCelda
Repetir = True Asignar a la variable Repetir el valor True
Range("C6").Select Selección de una celda
(C6) con referencia absoluta
Do Until Repetir = False Hacer hasta que la Variable Repetir sea igual a
False (bucle O)
MICOLOR = InputBox("Resaltar Celda
con Color: Amarillo(6), Azul(5) O Rojo(3)") Asignar a la variable MICOLOR el valor
que devuelve la caja de diálogo
InputBox (6, 5 ó 3)
IF MICOLOR Like "[6, 5, 3]" Then Si la variable MICOLOR vale 6, 5 ó 3
Entonces hacer:
Repetir = False Asignar a la variable Repetir el valor False
Else De lo contrario Hacer:
MsgBox ("Recuerde, solo puede
tipear los números: 6, 5 ó 3") Mostrar en una caja MsgBox el mensaje
entre comillas
End If Fin del bloque Si
Loop Repetir bucle 0
Do Until ActiveCell = “” Hacer hasta que la Celda Activa esté vacía (bucle1)
Do Until ActiveCell = “” Hacer hasta que la Celda Activa esté vacía (bucle2)
If ActiveCell > 50000 Then Si la Celda Activa es mayor que 50000 entonces
With Selection.lnterior Con el interior de la selección actual Aplicar
.Colorlndex = MICOLOR índice de color igual al valor almacenado en la variable
MICOLOR
.Pattern = xlSolid Patrón del relleno Sólido
End With Fin del bloque Con
End If Fin del bloque Si
44
TRADUCCIÓN DEL CÓDIGO (CONTINUACIÓN)
ActiveCeII.Offset(1, Q).Range("a1").Select Selección relativa a la celda activa:
celda ubicada 1 fila hacia abajo y 0
columnas a la derecha
Loop Repetir bucle2
ActiveCeII.Offset(-1, 1).Range("a1").Select Selección relativa a la celda activa:
celda ubicada 1 fila hacia arriba y 1
columna a la derecha
Selection.End(xIUp).Select Seleccionar la última celda con datos del bloque,
en la dirección hacia arriba
Loop Repetir bucle 1
End Sub Fin del procedimiento ResaltarCelda
45
8. Pulsar la tecla Enter o hacer clic en el botón Aceptar para terminar de
ejecutar el resto de la macro.
46
TRADUCCIÓN DEL CÓDIGO (MODIFICACIONES EN NEGRITAS)
Dim n, c As Integer Declarar variables n y c como locales tipo Entero
Sub Conversión () Inicio del procedimiento Conversión
Do Hacer (Bucle hacer Hasta)
n = Val(InputBox("indique el nú-
mero de datos que tendrá la lista:")) Asignar a la variable "n" el valor
introducido por el usuario en el InputBox
Range("D2").Select Selección de una celda (D2) con referencia absoluta
ActiveCell.FormulaR1C1 = n Escribir en la celda activa el valor de la
variable "n"
tipo = UCase(InputBox("lndique el tipo de
conversión °Kelvin(K) o °Fahrenheit(F):")) Asignar a la variable "tipo" el
contenido en mayúscula del valor
introducido por el usuario en el
lnputBox
Range("D4").Select Selección de una celda (D4) con referencia absoluta
ActiveCell.FormulaR1C1 = “0” & tipo Escribir en la celda activa el caracter
"0" más el contenido de la variable
tipo
Range("C5").Select Selección de una celda (C5) con referencia absoluta
If ActiveCell <> “” Then Si la celda activa no está vacía Entonces Hacer:
ActiveCell. Offset(0, 1).Range(“a1").Select Seleccionar la celda ubicada 1
columna a la derecha de la celda
activa
Selection.End(xldown).Select Seleccionar la última celda del bloque de datos
actual en la dirección hacia abajo
Range(“c5", ActiveCell).Clear Borra el contenido del rango que va desde la
celda "C5" hasta la celda activa (último dato de
la lista)
End If Fin del Si
Range(“d4").Select Selección de una celda (D4) con referencia absoluta
For c = 1 To n Para c igual 1 hasta n
ActiveCeII.Offset(1, -1).Range("a1").Select Selección relativa a la celda activa:
celda ubicada 1 fila hacia abajo y 1
columna a la izquierda
centígrado = (c - 1) * 5 Asignar a la variable centígrado el contenido de la celda
activa
ActiveCell.FormulaR1C1 = centígrado Escribir en la celda activa el contenido
de la variable centígrado
ActiveCell.HorizontalAlignment = xlCenter Centrar horizontalmente el contenido
de la celda activa
47
CONTINUACIÓN DE LA TRADUCCIÓN DEL CÓDIGO (CAMBIOS EN NEGRITAS)
ActiveCell.Offset(0, 1).Range(“a1").Select Selección relativa a la celda activa:
celda ubicada 0 filas hacia abajo y 1
columna a la derecha
If tipo = "K" Then Si el contenido de la variable "tipo" es igual a "K"
Entonces Hacer
ActiveCell.FormulaR1C1 = centígrado + 273 Escribir en la celda activa el
resultado de sumar 273 al
contenido de la variable
centígrado
Else Si el contenido de la variable "tipo" no es igual a "K" Entonces Hacer
ActiveCell.FormulaR1 C1 = (centígrado * 9/5) + 32 Escribir en la celda activa el
resultado de multiplicar por 9/5
el contenido de la variable
centígrado y sumarle 32 al
producto
End If fin del Si
ActiveCell.HorizontalAlignment = xlCenter Centrar horizontalmente el contenido de
la celda activa
Next Incrementar contador (e) y repetir bucle (si e < n)
respuesta = MsgBox("¿Lista definitiva?", 4) Asignar a la variable
"respuesta" el valor del botón
pulsado por el usuario
(Si=Vbyes/No=VbNo)
Loop Until respuesta = vbYes Repetir el bucle hasta que la variable
"respuesta" sea igual a VbYes
End Sub Fin del procedimiento Conversión
48
6. Pulsar la tecla Enter o hacer clic en el botón Aceptar para avanzar al
siguiente paso.
7. Tipear en InputBox2 el tipo de conversión (ºKelvin = K, °Fahrenheit = F).
8. Mover la caja MsgBox para despejar la lista, y luego decidir si esta lista es la
definitiva (clic en el botón Si) o no (clic en el botón No)
9.En el caso de haber hecho clic en el botón No, repetir pasos del 5 al 8, hasta
que se logre la lista definitiva (la que complace su requerimiento).
49
Son aquellos que se pueden colocar en un formulario y que tienen su propio
conjunto de propiedades, métodos y eventos reconocidos. Puede utilizar
controles para recibir entradas del usuario, mostrar resultados y desencadenar
procedimientos de evento. Puede manipular la mayoría de los controles
utilizando métodos. Algunos controles son interactivos (responden a acciones
del usuario) mientras que otros son estáticos (sólo son accesibles mediante
código). Entre los controles más comunes, podemos resaltar los siguientes:
1) CommandButtom (Botón de Comando): Inicia, finaliza o interrumpe una
acción o una serie de acciones. La macro o el procedimiento de evento
asignado al evento Click del control CommandButton determina qué hace el
control CommandButton. Por ejemplo, puede crear un control
CommandButton que abra otro formulario. También puede mostrar un texto,
una imagen o ambos en un control CommandButton.
2) ListBox (Cuadro de Lista): Muestra una lista de valores y le permite
seleccionar uno o varios de ellos. Si el control ListBox es dependiente de un
origen de datos, almacena el valor seleccionado en el origen de datos. El
control ListBox puede aparecer como una lista o como un grupo de controles
OptionButton o CheckBox.
3) TextBox (Cuadro de Texto): Muestra información de un usuario o de un
conjunto de datos organizados. Un control TextBox es el control utilizado
más habitualmente para mostrar información escrita por un usuario.
También puede mostrar un conjunto de datos como una tabla, una consulta,
una hoja de cálculo o el resultado de un cálculo. Si un control TextBox es
dependiente de un origen de datos, al cambiar el contenido del control
TextBox también cambia el valor del origen de datos dependiente.
4) ComboBox (Cuadro Combinado): Combina las características de un control
ListBox y un control TextBox. El usuario puede escribir un valor nuevo, como
en un control TextBox o bien puede seleccionar un valor existente como en
un control ListBox
5) Label (Etiqueta): Muestra un texto descriptivo. Un control Label en un
formulario muestra un texto descriptivo como títulos, leyendas, imágenes o
breves instrucciones. Por ejemplo, las etiquetas para una libreta de
direcciones podrían incluir un control Label para el nombre, la calle o la
ciudad. Un control Label no muestra valores de origen de datos ni
expresiones; es siempre independiente y no cambia cuando se mueve de un
registro a otro.
6) CheckBox (Botón de Opción): Muestra el estado de selección de un
elemento. Utilice un control CheckBox para ofrecer al usuario la posibilidad
de elegir entre dos posibles valores como Sí/No, Verdadero/Falso, o
Activado/Desactivado. Cuando el usuario selecciona un control CheckBox,
éste muestra una marca especial (como X) y su valor actual es Sí,
Verdadero, o Activado; ; si el usuario no selecciona el control CheckBox,
éste está vacío y su valor es No, Falso, o Desactivado. Dependiendo del
valor de la propiedad TripleState , un control CheckBox puede también tener
un valor null.
50
7) Image (Imagen): Muestra una imagen en un formulario. El control Image
permite mostrar una imagen como parte de los datos de un formulario. Por
ejemplo, podría utilizar un control Image para mostrar fotografías de
empleados en un formulario del personal.
Ejercicio 14: Generar una macro que active un sistema de consulta de precios,
asociando un formulario personalizado con una base de datos en una hoja de
cálculo.
1. Generar datos en la Hoja1 del Libro activo, según se indica:
3. Regresar a la Hoja1.
4. Insertar la función de base de datos: BDEXTRAER en la celda C4 de la
Hoja 1:
a) Seleccionar la celda C4
b) Clic en el botón Insertar función (ubicado en la barra de entrada)
c) Elegir en Seleccionar una Categoría, la opción: Base de datos y elegir
en Seleccionar una función, la opción: BDEXTRAER
51
d) Hacer clic en el botón Aceptar
e) Definir campos:
Base_de_datos = Hoja2!A1 :B6
Nombre_de_campo = Hoja2!B1
Criterios = B3:B4
52
6. Editar la fórmula de la celda C4 para que no se produzca un error cuando la
celda B4 esté vacía:
a)Seleccionar la celda C4
b)Pulsar la tecla de función F2
c)Modificar la fórmula según se indica:
53
d) Agregar al formulario (UserForm1) un Cuadro de lista:
- Clic en el control: Cuadro de lista (Cuadro de herramientas).
- Clic dentro del formulario (UserForm1) para ubicar el cuadro de lista
(ListBox1).
e) Editar el Cuadro de lista para adecuar su presentación:
- Arrastre desde dentro del Cuadro de lista para moverlo.
- Arrastre desde los puntos de control del Cuadro de lista para
escalarlo.
f) Insertar 2 Botones de control a la forma (Userform1):
- Clic en el control: Botón de comando (Cuadro de herramientas).
- Clic dentro del formulario (UserForm1) para ubicar el botón de
comando (CommandButtom 1).
- Repetir los 2 pasos previos para generar el otro botón de comando
(CommandButtom2).
g) Editar los Botones de comando para adecuar su presentación:
- Clic sobre el botón de comando, clic sobre el titulo del botón de
comando y tipear nuevo nombre (Aceptar al primero y Cancelar al
segundo) para cambiar nombres genéricos, finalmente pulsar la tecla
Esc para liberar el botón editado.
- Arrastre desde el borde del Botón de comando para moverlo.
- Arrastre desde los puntos de control del Botón de comando para
escalarlo.
h) Agregar una Etiqueta al cuadro de lista para identificarla:
- Clic en el control: Etiqueta (Cuadro de herramientas).
- Clic dentro del formulario (UserForm1) para ubicar la Etiqueta (Label1).
i) Editar la Etiqueta para adecuar su presentación:
- Clic sobre la Etiqueta (LabeI1), clic sobre el título de la Etiqueta y tipear
el nuevo rótulo (Productos:) para cambiarle el nombre genérico,
finalmente pulsar la tecla Esc para liberar la Etiqueta.
- Arrastre desde el borde de la Etiqueta para moverlo.
54
- Arrastre desde los puntos de control de la Etiqueta para escalarlo.
j) Enlazar los controles del formulario UserForm1 con la hoja de cálculo del
libro activo:
- Clic sobre el Cuadro de lista (ListBox1), para seleccionarlo.
- Clic sobre el botón Ventana de propiedades (Barra Estándar)
- Clic sobre la ficha Por categorías (Propiedades - ListBox1)
- Definir la fuente de datos del Cuadro de lista (ListBox1):
RowSource=Hoja2!A2:A6
- Definir el destino del dato seleccionado en Cuadro de lista (ListBox1):
ControlSource=B4
55
TRADUCCIÓN DEL CÓDIGO
UserForm1.Hide Ocultar el formulario UserForm1
57
Sección
DEPURANDO LAS MACROS
4
TIPOS DE ERRORES
ERRORES SINTÁCTICOS:
Son los errores que se producen cuando no respetamos plenamente, la
estructura que exige el Visual Basic, para la correcta escritura del código de las
macros. Por ejemplo, cuando se abren unas comillas que no se cierran en
alguna línea del código.
ERRORES DE COMPILACIÓN:
Son los errores que no están circunscritos a una sola línea del macro, y que
normalmente se producen cuando no se completa la estructura de bloques o
bucles de programación. Este tipo de errores se detectan durante la traducción
de los módulos y demás procedimientos al lenguaje de máquina (compilación).
Un ejemplo típico de este tipo de errores, es cuando arrancamos un bucle For
.. y olvidamos cerrarlo con la instrucción ... Next.
ERRORES LÓGICOS:
Son los errores que no puede detectar el Visual Basic, ya que no están
asociados a fallas de escritura del programa, si no, a la organización y
nominación de variables y procedimientos por parte del programador. Por
ejemplo, si quiere cambiar el nombre de una hoja de cálculo a "Datos" y
escribe accidentalmente "Dotas". La computadora nunca podrá detectar el
error si posteriormente, usted hace referencia al objeto, a través del nombre
que pensó inicialmente asignarle a dicha hoja.
ERRORES EN TIEMPO DE EJECUCIÓN:
Algunas veces, una instrucción de un procedimiento trabaja bien bajo ciertas
circunstancias, pero falla en otras. Tales errores no pueden ser detectados
hasta que se ejecute el procedimiento, lo que define su nombre. Por ejemplo,
al hacer referencia a un nombre de rango, si este existe no habrá ningún
problema ,pero sin embargo, si borra el nombre del rango, Visual Basic no
sabrá que hacer y aparecerá un mensaje de error.
58
advierte inmediatamente; lo cual convierte en una tarea muy sencilla detectar y
corregir los errores de sintaxis al desarrollar una macro en VBA.
Es importante advertir que por el contrario, cuando le damos entrada a una
línea de código escrita correctamente, el editor de Visual Basic formatea
automáticamente las palabras reservadas, resaltándolas en color azul.
Si por alguna razón se desea desactivar la corrección automática de sintaxis:
haga clic en el menú: Herramientas / opción: Opciones ... / Comprobación
de sintaxis automática (en el Visual Basic).
Ejercicio 16: Sobre el mismo módulo del ejercicio anterior, generar un error de
compilación y comprobar la corrección automática usando el comando
Compilar <Proyecto>.
59
1. Asegurarse de que el error de sintaxis se haya corregido (cambiar la palabra
Them por Then).
2. Volver a darle entrada a la línea de código: pulsar la tecla Enter, desde el
final de la línea de código editada.
3. Activar el comando Compilar, hacer clic en el menú: Depuración / opción:
Compilar.
60
2. Editar la macro; hacer clic en el menú: Herramientas / opción: Macro /
Macros ... / Promediar / Modificar.
3. Dividir la pantalla en dos paneles, ubicando arriba la ventana del Excel y
abajo la ventana del Visual Basic:
a) Clic con el botón derecho sobre la barra de Inicio (apuntando a un sitio
vacío).
b) Seleccionar la opción: Mosaico Horizontal.
c) Si el orden no es el requerido: mover las ventanas arrastrándolas
manualmente, y repetir los pasos a y b.
4. Activar la ventana del Visual Basic y ejecutar el comando Paso a Paso por
Instrucciones: clic en el menú: Depuración / opción: Paso a Paso por
Instrucciones.
5. Pulsar repetidamente la tecla de función F8, y simultáneamente seguir la
ejecución de cada línea de codificación, sobre la ventana del Excel.
61
2. Editar la macro; hacer clic en el menú: Herramientas / opción: Macro /
Macros ... / Conversión / Modificar.
3. Dividir la pantalla en dos paneles, ubicando arriba la ventana del Excel y
abajo la ventana del Visual Basic:
a) Clic con el botón derecho sobre la barra de Inicio (apuntando a un sitio
vacío).
b) Seleccionar la opción: Mosaico Horizontal.
e) Si el orden no es el requerido: mover las ventanas arrastrándolas
manualmente, y repetir los pasos a y b.
4. activar la ventana del Visual Basic y ejecutar el comando Paso a Paso por
Instrucciones: clic en el menú: Depuración / opción: Paso a Paso por
Instrucciones.
5. Pulsar repetidamente la tecla de función F8, y simultáneamente seguir tanto
la ejecución de cada línea de codificación, sobre la ventana del Excel; como
la evolución de las variables (apuntándolas con el mouse al avanzar de un
paso a otro) dentro del programa.
62
APÉNDICE
FUNCIONES DE
A
MANEJO DE DATOS
Una función es una fórmula prescrita por Visual Basic que permite efectuar
cálculos complejos de forma rápida y sencilla. Las funciones siempre devuelven
un resultado, por tanto, suelen incluirse en sentencias de asignación.
1. Format:
La función Format establece el formato de una expresión.
Sintaxis: Format(Expresión[,formato])
En donde:
a)Expresión.
Es la expresión a la cual se desea dar formato (puede ser número, texto,
fecha u hora, el nombre de una variable, etc.).
b)Formato.
Una expresión definida por el usuario o el nombre de una expresión.
63
2. Now:
La función Now devuelve la fecha y la hora actual según la configuración del
sistema. Esta función no presenta ningún argumento.
Sintaxis: Now
3.Val:
La función Val devuelve la parte numérica contenida en una cadena. Para
ello leerá la cadena hasta encontrar un carácter no reconocido como parte
de un número y devolverá el número encontrado hasta ese momento (el
carácter punto será tomado como separador decimal, el carácter coma no
será reconocido como parte del número y los espacios en blanco y
tabuladores no serán reconsiderados).
Sintaxis: Va/(cadena)
4.Mid$:
La función Mid$ da como resultado una subcadena de "m" caracteres de
longitud, de la cadena, empezando por el n-ésimo carácter.
Sintaxis: Mid$ ( cadena, n[,longitud] )
En donde:
a)cadena.
Obligatorio. Expresión de cadena de la cual se devuelven los
caracteres.
Si cadena contiene Null, se devuelve Null.
b)n.
Obligatorio. Posición de carácter, en la cadena, en la cual comienza
la parte que se quiere tomar. Si n es mayor que el número de
caracteres en la cadena, Mid devuelve una cadena de longitud cero("
").
e)longitud.
64
Opcional. Número de caracteres que se van a devolver. Si se omite,
o
Ejemplos:
Subcadena = Mid$("Hola, 1 ,3) 'Subcadena contiene "Hol"
a)cadena.
Obligatorio. Es cualquier expresión de cadena válida. Si cadena contiene
Null, se devuelve Null.
6.Left$ / Right$
Toman como parámetro una cadena y un número de caracteres,
devolviendo dicho número de caracteres comenzando a extraer desde el
principio de la cadena (Left) o desde el final (Rigth).
Sintaxis: Left$( cadena, longitud)
Right (cadena, longitud)
En donde:
a) cadena.
Obligatoria. Expresión de cadena de la cual se devuelven los caracteres
que están más a la izquierda. Si cadena contiene Null, se devuelve Null.
b) longitud.
65
Se requiere un tipo Variant (Long). Expresión numérica que indica cuántos
caracteres se van a devolver. Si es 0, devuelve una cadena de longitud cero
(''''). Si es mayor o igual al número de caracteres en cadena, se devuelve la
cadena entera.
APÉNDICE
EXPRESIONES Y
B
OPERADORES
1.Operadores Aritméticos:
/\ Exponenciación
66
- Cambio de signo
*, I Multiplicación y División
\ División Entera
Mod Resto de una división entera
-, + Resta y suma
Ejemplo:
67
Ejemplo:
5+1>8 'Devuelve Falso
"abe" <> "a" & "b" & "e" 'Devuelve Falso
5 * 3 >= 5 * 2 'Devuelve Verdadero
Ejemplo:
vNombre$ = "antonieta"
vApellido$ = "González"
3. Operadores Lógicos:
La siguiente tabla muestra una relación de los operadores lógicos, así como
los valores que devuelven según sean las expresiones de entrada Ex1
representa el valor devuelto por la primera expresión, y Ex2 el de la
segunda.
Operador
(por prioridad) Devuelve True si: Devuelve False si:
68
And Ex1 = True y Ex2 = True En cualquier otro caso
APÉNDICE
PROPIEDADES DE
C
LOS FORMULARIOS
Los formularios tienen una serie de propiedades que describen sus características.
(color, tamaño, título, etc.). Las propiedades pueden ser establecidas durante el
diseño de la aplicación o durante le ejecución, no obstante, algunas propiedades
sólo se podrán establecer en diseño o en ejecución. A continuación describiremos
algunas de las más importantes.
1.SpecialEffect:
2.BackColor:
3.ForeColor:
69
Establece el color del primer plano en un formulario o control; por ejemplo,
para etiquetas o cuadros de texto, determina el color con que aparecerá el
texto escrito en ellos.
70
Definir colores. La función RGB permite especificar un color. Sintaxis: RGB (rojo,
verde, azul)
En donde:
a)Rojo.
b)Verde.
e)Azul.
La siguiente tabla muestra algunos colores estándar y sus valores de rojo, verde y
azul:
Negro O O O
Azul O O 255
Verde O 255 O
Cian O 255 255
Rojo 255 O O
Magenta 255 O 255
Amarillo 255 255 O
Blanco 255 255 255
Usar constantes definidas: Visual Basic cuando desee especificar el color como
valor para un argumento de color o una propiedad de color, por ejemplo:
BaekColor = vbRed
71
La Siguiente tabla muestra las constantes de color definidas por Visual Basic:
4.BorderStyle:
5.Caption:
6.Enabled:
Valor Característica
True Activo
Fa/se Inactivo
7. Font:
72
Establece tanto en diseño como en ejecución el formato del texto que
presenta el objeto, las características de formato son: Fuente o tipo de letra,
tamaño, estilo (negrita y cursiva) y efectos (tachado y subrayado). La
elección del formato, durante el diseño, se efectuará mediante el cuadro de
diálogo Fuente. Hacer doble clic en el nombre de la propiedad, seleccionar
el tipo de letra, su estilo, su tamaño y otros atributos. Una vez realizada la
selección hacer clic en el botón Aceptar y el efecto será inmediato.
Propiedad Característica
8.Height:
Esta propiedad establece o devuelve la altura del objeto, la unidad de
medida que utiliza generalmente es twips que equivale a una veintena
(1/20) parte de punto (1/20 de un punto de impresión). Existen
aproximadamente 1440 twips en una pulgada lógica o 567 twips en un
73
centímetro lógico. Esta propiedad está presente en la mayoría de los
controles y formularios de Visual Basic.
74
9. Left:
10. Mouselcon:
Esta propiedad establece el aspecto del icono del punto del ratón (siempre
y cuando la propiedad MousePointer tenga el valor 99) cuando sea situado
sobre un controlo formulario en tiempo de ejecución. La propiedad
Mouselcon se encuentra presente en casi todos los controles y formularios
de Visual Basic.
11.Name:
12. MousePointer:
Establece o devuelve el aspecto del icono que adopta el puntero del ratón
cuando sea situado sobre un control es tiempo de ejecución. La propiedad
75
MousePointer se encuentra presente en casi todos los controles y
formularios de Visual Basic.
Puede establecer durante el diseño o la ejecución y los valores que puede tomar
son:
13.Top:
76
14.Visible:
Puede tomar el valor True o False indicando si el control debe estar visible
u oculto. Se encuentra en la mayoría de los controles de Visual Basic. Su
valor se puede establecer en diseño o ejecución.
77
APÉNDICE
PROPIEDADES DE
D
LOS CONTROLES
En esta sección se describirán las propiedades de los principales controles (los
que aparecen por defecto en el cuadro de herramientas).
1. Label (Etiquetas):
a)AutoSize.
b)BackStyle.
c)BordeStyle.
WordWmp.
78
verticalmente al texto; si tuviera el valor False el ajuste se realizaría
horizontalmente.
a)Text.
b)BorderStyle.
c) Locked.
d)MaxLength.
79
aproximadamente 32 KB para los controles TextBox de múltiples líneas. Un
valor mayor que cero(O) indica el número máximo de caracteres.
d)Multiline.
e)PasswordChar.
f)ScrollBar.
g)Text.
a)Accelerator.
80
Esta propiedad permite asignar un carácter (alfabético) de la propiedad
caption para ser utilizado en combinación con la tecla Alt como acceso
directo.
81
4. CheckBox (Casilla de Verificación): i!!
Las propiedades específicas que presenta este control son las siguientes:
a)Value.
a)Value.
a)Columns.
82
columna, si se desean presentar más columnas, se deberá establecer el
número de columnas deseado como valor para esta propiedad.
b)List.
c)Listlndex.
d)Mutiselect.
e)Select.
f)Text.
83
Contiene el último elemento seleccionado, y permite durante la ejecución
pasar dicho valor a una variable. La propiedad Text no puede ser
establecida durante el diseño de la aplicación.
84
g)AddItem.
h)Glear.
i)Removeltem.
Las propiedades comunes que presentan los cuadros combinados son las
siguientes: BackColor, Enabled, ForeColor, Height, Index, Left, MousePointer,
Name, Top, Visible, Width, y las propiedades relacionadas con las fuentes del
texto.
85
a)Style.
b)Text.
8.Picture:
Enabled, Height, Index, left, Mousepointer, Name, Top, Visible y Widht. Los
controles image presentan las siguientes propiedades específicas:
a)Strecht.
86
cambia de tamaño para ajustarse al tamaño del control. Si el valor es False,
será el tamaño del control el que se ajustará al tamaño del gráfico.
87
APÉNDICE
EVENTO DE LOS
E
OBJETOS
A continuación se ofrece una lista de los eventos, que son reconocidos por los
controles que aparecen por defecto en el cuadro de herramientas, los restantes
eventos serán detallados junto con los controles que los reconocen.
1.Change:
CONTROL PROPIEDAD
Combobox Text
Hsccrollbar Value
Vscrollbar Value
Label Caption
Picturebox Picture
textbox Text
88
Una utilidad habitual de este evento consiste en determinar la validez de un
dato escrito en un cuadro de texto. También se suele utilizar para activar o
desactivar un botón en función de una respuesta al usuario.
2.Clic:
Este evento ocurrirá al hacer clic en el botón del ratón cuando el puntero del
ratón se encuentre sobre el control. Cuando se hace clic sobre un control,
además del evento Click se producen los eventos MouseDown y MouseUp.
3.Dblclick:
El evento Dblclick ocurrirá cuando se pulse dos veces el ratón (en una
secuencia rápida) sobre el control.
89
Su utilización es frecuente en los cuadros de lista para seleccionar una
opción y cerrar el cuadro de diálogo (esto sucede en cualquier cuadro de
diálogo Abrir estándar).
4.Deactivate:
5.Gotfocus:
Un control recibirá el foco cuando se haga c1ic sobre él, cuando al pulsar la
tecla TAB el foco pase a este control o cuando se utilice el método
SetFocus.
Sintaxis: Nombre_contro/.SetFocus
6.Load:
90
Este evento es reconocido únicamente por los formularios (estándar y MDl)
Es frecuente asociar a este evento la declaración de variables en el ámbito
del formulario y también establecer el valor de algunas propiedades de los
controles.
91
7. Lostfocus:
Un control puede perder el foco cuando se haga clic sobre otro control,
cuando al pulsar la tecla TAB o cuando se utilice el método SetFocus. Es
frecuente asociar a este evento código que permita validar una entrada de
datos por parte del usuario y en función del texto escrito por el usuario
realizar una operación y otra.
8.Resize:
9.Scroll:
92
El siguiente código establece el color de fondo del formulario a medida que
se arrastra el cuadro de desplazamiento de un control de barra de
desplazamiento vsbColor.
Initialize.
Load.
Inicializaciones adicionales.
Resize.
Paint.
QueryUnload
Unload
Termínate
11.EVENTOS DE MOUSE:
a)Click.
b)Dblclick.
c)DragDrop.
d)DragOver.
93
Se dispara de forma continua cuando se está produciendo una operación
de arrastrar y soltar.
e)Mouse Down.
f) MouseMove.
g) MouseUp.
13.a) KeyDown.
b)KeyPress.
c)KeyUp.
13.EVENTOS MISCELANEOS:
a)Activate.
b)Desactivate
c)GotFocus.
d)LostFocus.
94
Cuando un control pierde el foco (con el ratón o el teclado se selecciona
otro control). Las propiedades Visible y Enable deberán estar establecidas a
True.
95
96