Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
[Seleccionar fecha]
Pág.| 1 Contenido
Introducción……………………………………………………………………..pág. 2
INTRODUCCIÓN
Excel es un software de cálculos que tiene muchas aplicaciones es usada por Economistas, ingenieros e
inclusive hay programadores que han realizado interfaz entre proyectos electrónicos y Excel.
Pese a que existen softwares más específicos en el cálculos de Ingeniería, Excel es la mejor alternativa pues
Excel está disponible en cualquier computadora que funciona con Windows por lo tanto sea cualquiera el sitio
al que vallamos encontraremos Excel, entonces podemos decir que es necesario aprender a programar en el
entorno Excel
Como en cualquier programar es necesario elegir la aplicación que va tener nuestro programa en el entorno
Excel y seguir una serie de pasos que lleven a su entendimiento y solución, es decir, es necesaria la
utilización de un algoritmo por medio del cual se resuelva dicho problema. Crear diagramas de flujo, para la
representación de algoritmos de programación estructurada, esto facilitara en gran medida el trabajo pues se
suprimen detalles innecesarios.
Una parte muy importante es tener pleno conocimiento de los operadores usados en las formulas de Excel
así como el reconocimiento del conjunto de FUNCIONES DE EXCEL para poderlo utilizar como una
herramienta para la ejecución de nuestro sub programa.
Esta representación se da cuando varios símbolos, se relacionan entre si mediante líneas que
indican el orden el orden en que se deben ejecutar los procesos.los símbolos utilizados han sido
normalizados por el instituto norteamericano de normalización (ANSI).
A su vez, es importante que al construir diagramas de flujo tomar las siguientes precauciones:
Evitar las burbujas de generación espontánea, que tienen salidas sin tener entradas,
porque son sumamente sospechosas y generalmente incorrectas.
Tener cuidado con los flujos y procesos no etiquetados. Esto suele ser un indicio de falta
de esmero, pero puede esconder un error aún más grave: a veces el analista no etiqueta
un flujo o un proceso porque simplemente no se le ocurre algún nombre razonable.
Pág.| 4
SIMBOLO DESCRIPCION
Estructura de selección
binaria(If...Then...Else).
de interacciones.
Pág.| 7
Estructu
ra (UNTIL). Repite las instrucciones
verdadera .
Debe definirse claramente los problemas particulares que deberán ser resueltos o las tareas que
hay que realizar, esto nos permitirá saber qué es lo que se pretende solucionar y nos
proporcionará información útil para el planeamiento de la solución.
Una vez identificada la salida que se desea, identificar las funciones de Excel que se van ha usar.
Aquí se definen las tareas de y funciones de Excel para el procesamiento del sub programa.
Los datos seleccionados deben ser arreglados en una forma ordenada para producir información..
Para resolver r este problema, se debe hacer énfasis en esto aprender a discernir qué información es
importante y cual podemos dejar de lado.
Pregunta
Si de escoger se trata, la información más importante y que va a dar respuesta a mi problema serían las 5
calificaciones, la información restante carece de importancia para los fines que persigue este problema
específico. Cada uno de estos datos se debe guardar en variables que en este caso, para manejarlo en Excel
se guardan en celdas. A1, R600, BB, etc.
El proceso pueden ser fórmulas aritméticas, o que realicen el tratamiento de texto o cadenas, el resultad o
de estas
Salida o Impresión: Representa una operación o conjunto de operaciones que permiten comunicar a l
exterior el o los resultados alcanzados. Aquí nos debemos formular la siguiente pregunta: ¿Que es lo que
quiero de s alida , que resultados ?
Dependiendo de esto, la entrada y el proceso deberán ir ligadas lógicamente a la salida y proporcionar los
resultados deseados a la salida. Este resultado lo podemos enviar al monitor o a la impresora o al web.
Haciendo referencia al ejemplo antes mencionado la salida sería P que sería el promedio de las 5
calificaciones
Inicio
Entrada
SI NO
H2=pa
r
A1=PAR
A1=IMPAR
Fin
Operadores aritméticos
Para ejecutar las operaciones matemáticas básicas como suma, resta o multiplicación, combinar
números y generar resultados numéricos, utilice los siguientes operadores aritméticos.
Significado
Operador aritmético
(Ejemplo)
Resta (3-1)
- (signo menos)
Negación (-1)
% (signo de
Porcentaje (20%)
porcentaje)
Operadores de comparación
Se pueden comparar dos valores con los siguientes operadores. Cuando se comparan dos valores
utilizando estos operadores, el resultado es un valor lógico: VERDADERO o FALSO.
Utilice el signo (&) para unir o concatenar una o varias cadenas de texto con el fin de generar un
solo elemento de texto.
Operador de
Significado (Ejemplo)
texto
Operadores de referencia
Combinan rangos de celdas para los cálculos con los siguientes operadores.
Operador de
Significado (Ejemplo)
referencia
Operador de rango que genera una referencia a todas las celdas entre dos
: (dos puntos)
referencias, éstas incluidas (B5:B15)
Operador de intersección que genera una referencia a celdas comunes a las dos
(espacio)
referencias (B7:D7 C6:C8)
Las fórmulas calculan los valores en un orden específico. Las fórmulas de Excel siempre
comienzan por un signo igual (=). El signo igual indica a Excel que los caracteres siguientes
constituyen una fórmula. Detrás del signo igual están los elementos que se van a calcular (los
operandos), separados por operadores de cálculo. Excel calcula la fórmula de izquierda a derecha,
según el orden específico de cada operador de la fórmula.
Si se combinan varios operadores en una única fórmula, Excel ejecutará las operaciones en el
orden que se indica en la tabla a continuación. Si una fórmula contiene operadores con la misma
precedencia (por ejemplo, si una fórmula contiene un operador de multiplicación y otro de
división), Excel evaluará los operadores de izquierda a derecha.
Operador Descripción
, (coma)
% Porcentaje
^ Exponenciación
Uso de paréntesis
Para cambiar el orden de evaluación, escriba entre paréntesis la parte de la fórmula que se
calculará en primer lugar. Por ejemplo, la siguiente fórmula da un resultado de11 porque Excel
calcula la multiplicación antes que la suma. La fórmula multiplica 2 por 3 y, a continuación, suma 5
al resultado.
=5+2*3
=(5+2)*3
En el siguiente ejemplo, los paréntesis que rodean la primera parte de la fórmula indican a Excel
que calcule B4+25 primero y después divida el resultado por la suma de los valores de las celdas
D5, E5 y F5.
=(B4+25)/SUMA(D5:F5)
Una constante es un valor que no se calcula. Por ejemplo, la fecha 9-10-2008, el número 210 y el
texto "Ganancias trimestrales" son constantes. Una expresión, o un valor obtenido como resultado
de una expresión, no es una constante. Si utiliza valores constantes en la fórmula en vez de
referencias a celdas (por ejemplo, =30+70+110), el resultado cambia sólo si modifica la fórmula.
Pág.| 15
Para conocer las funciones que necesitamos (podemos ir al icono insertar función, luego
presionar ayuda sobre esta función ahí nos mostrara como usar la función adecuadamente)
Funciones de cubo
Funciones de ingeniería
Funciones financieras
Funciones de información
Funciones lógicas
Funciones estadísticas
Funciones de texto
Función Descripción
SQL.REQUEST Establece conexión con un origen de datos externo, ejecuta una consulta desde
una hoja de cálculo y, a continuación, devuelve el resultado en forma de matriz
sin necesidad de programar una macro
Funciones de cubo
Función Descripción
MIEMBROCUBO Devuelve un miembro o tupla en una jerarquía de cubo. Se usa para validar la
existencia del miembro o la tupla en el cubo.
PROPIEDADMIEMBROCUBO Devuelve el valor de una propiedad de miembro del cubo Se usa para validar la
existencia de un nombre de miembro en el cubo y para devolver la propiedad
especificada para este miembro.
Función Descripción
BDCONTAR Cuenta el número de celdas que contienen números en una base de datos.
BDEXTRAER Extrae de una base de datos un único registro que cumple los criterios especificados.
BDPRODUCTOMultiplica los valores de un campo concreto de registros de una base de datos que cumplen los
criterios especificados.
BDDESVEST Calcula la desviación estándar a partir de una muestra de entradas seleccionadas en la base de
datos.
BDDESVESTP Calcula la desviación estándar en función de la población total de las entradas seleccionadas de
la base de datos.
BDSUMA Suma los números de la columna de campo de los registros de la base de datos que cumplen los
criterios.
BDVAR Calcula la varianza a partir de una muestra de entradas seleccionadas de la base de datos.
BDVARP Calcula la varianza a partir de la población total de entradas seleccionadas de la base de datos.
Función Descripción
FECHANUMERO Convierte una fecha con formato de texto en un valor de número de serie.
DIAS360 Calcula el número de días entre dos fechas a partir de un año de 360 días.
FIN.MES Devuelve el número de serie correspondiente al último día del mes anterior o posterior a un
número de meses especificado.
DIAS.LAB Devuelve el número de todos los días laborables existentes entre dos fechas.
HORANUMERO Convierte una hora con formato de texto en un valor de número de serie.
DIA.LAB Devuelve el número de serie de la fecha que tiene lugar antes o después de un número
determinado de días laborables.
FRAC.AÑO Devuelve la fracción de año que representa el número total de días existentes entre el valor
de fecha_inicial y el de fecha_final.
Funciones de ingeniería
Función Descripción
Funciones financieras
Función Descripción
CUPON.DIAS.L1 Devuelve el número de días desde el principio del período de un cupón hasta la
fecha de liquidación.
CUPON.DIAS Devuelve el número de días del período (entre dos cupones) donde se encuentra la
fecha de liquidación.
CUPON.DIAS.L2 Devuelve el número de días desde la fecha de liquidación hasta la fecha del
próximo cupón.
MONEDA.FRAC Convierte una cotización de un valor bursátil expresada en forma decimal en una
cotización de un valor bursátil expresada en forma fraccionaria.
DURACION Devuelve la duración anual de un valor bursátil con pagos de interés periódico.
VF.PLAN Devuelve el valor futuro de un capital inicial después de aplicar una serie de tasas
de interés compuesto.
TIR Devuelve la tasa interna de retorno para una serie de flujos de efectivo periódicos.
TIRM Devuelve la tasa interna de retorno donde se financian flujos de efectivo positivos
y negativos a tasas diferentes.
VNA Devuelve el valor neto actual de una inversión en función de una serie de flujos
periódicos de efectivo y una tasa de descuento.
PRECIO.PER.IRREGULAR.1 Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con un
primer período impar.
PRECIO Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga una
tasa de interés periódico.
PRECIO.DESCUENTO Devuelve el precio por un valor nominal de 100 $ de un valor bursátil con
descuento.
PRECIO.VENCIMIENTO Devuelve el precio por un valor nominal de 100 $ de un valor bursátil que paga
interés a su vencimiento.
SYD Devuelve la amortización por suma de dígitos de los años de un bien durante un
período especificado.
LETRA.DE.TES.EQV.A.BONODevuelve el rendimiento de un bono equivalente a una letra del Tesoro (de EE.UU.)
LETRA.DE.TES.PRECIO Devuelve el precio por un valor nominal de 100 $ de una letra del Tesoro (de
EE.UU.)
VNA.NO.PER Devuelve el valor neto actual para un flujo de efectivo que no es necesariamente
periódico.
RENDTO.DESC Devuelve el rendimiento anual de un valor bursátil con descuento; por ejemplo,
una letra del Tesoro (de EE.UU.)
Funciones de información
Función Descripción
Funciones lógicas
Función Descripción
Pág.| 24 Y Devuelve VERDADERO si todos sus argumentos son VERDADERO.
SI.ERROR Devuelve un valor que se especifica si una fórmula lo evalúa como un error; de lo contrario,
devuelve el resultado de la fórmula.
Función Descripción
DIRECCION Devuelve una referencia como texto a una sola celda de una hoja de cálculo.
BUSCARH Busca en la fila superior de una matriz y devuelve el valor de la celda indicada.
HIPERVINCULOCrea un acceso directo o un salto que abre un documento almacenado en un servidor de red,
en una intranet o en Internet.
RDTR Recupera datos en tiempo real desde un programa compatible con la automatización COM
(automatización: modo de trabajar con los objetos de una aplicación desde otra aplicación o
herramienta de entorno. La automatización, antes denominada automatización OLE, es un
Pág.| 25 estándar de la industria y una función del Modelo de objetos componentes (COM).).
BUSCARV Busca en la primera columna de una matriz y se mueve en horizontal por la fila para devolver el
valor de una celda.
Función Descripción
MULTIPLO.SUPERIOR Redondea un número al entero más próximo o al múltiplo significativo más cercano.
REDONDEA.IMPAR Redondea un número hacia arriba hasta el entero impar más próximo.
SUMAR.SI Suma las celdas especificadas que cumplen unos criterios determinados.
SUMAX2MASY2 Devuelve la suma de la suma de los cuadrados de los valores correspondientes de dos
matrices.
SUMAXMENOSY2 Devuelve la suma de los cuadrados de las diferencias de los valores correspondientes de
dos matrices.
Funciones estadísticas
Función Descripción
PROMEDIO.SI Devuelve el promedio (media aritmética) de todas las celdas de un rango que
cumplen unos criterios determinados.
PROMEDIO.SI.CONJUNTO Devuelve el promedio (media aritmética) de todas las celdas que cumplen
múltiples criterios.
CONTAR.SI Cuenta el número de celdas, dentro del rango, que cumplen el criterio
especificado.
CONTAR.SI.CONJUNTO Cuenta el número de celdas, dentro del rango, que cumplen varios criterios.
BINOM.CRIT Devuelve el menor valor cuya distribución binomial acumulativa es menor o igual a
un valor de criterio.
MAXA Devuelve el valor máximo de una lista de argumentos, incluidos números, texto y
valores lógicos.
MINA Devuelve el valor mínimo de una lista de argumentos, incluidos números, texto y
valores lógicos.
PROBABILIDAD Devuelve la probabilidad de que los valores de un rango se encuentren entre dos
límites.
DESVESTA Calcula la desviación estándar a partir de una muestra, incluidos números, texto y
valores lógicos.
ERROR.TIPICO.XY Devuelve el error estándar del valor de "y" previsto para cada "x" de la regresión.
VARA Calcula la varianza en función de una muestra, incluidos números, texto y valores
lógicos.
Pág.| 31 VARP Calcula la varianza en función de toda la población.
Funciones de texto
Función Descripción
ASC Convierte las letras inglesas o katakana de ancho completo (de dos bytes) dentro de
una cadena de caracteres en caracteres de ancho medio (de un byte).
CODIGO Devuelve un código numérico del primer carácter de una cadena de texto.
JIS Convierte las letras inglesas o katakana de ancho medio (de un byte) dentro de una
cadena de caracteres en caracteres de ancho completo (de dos bytes).
EXTRAE, EXTRAEB Devuelve un número específico de caracteres de una cadena de texto que comienza en
la posición que se especifique.
Pág.| 32 FONETICO Extrae los caracteres fonéticos (furigana) de una cadena de texto.
DERECHA, DERECHAB Devuelve los caracteres del lado derecho de un valor de texto.
HALLAR, HALLARB Busca un valor de texto dentro de otro (no distingue mayúsculas de minúsculas).
SUSTITUIR Sustituye texto nuevo por texto antiguo en una cadena de texto.
Proceso
Salida
'Declaración de variables
'Entrada de datos
'proceso
Range(celda).Value = escribir
Range(celda).Font.Color = RGB(255, 0, 0)
'Salida
Worksheets(Hoja).Activate
Muchas de las tareas que realiza en Excel, como introducir los datos de ventas de un día determinado o agregar una fórmula a una
hoja de cálculo, sólo se realizan una vez. Otras tareas, como cambiar el formato de un rango de celdas, se repiten a menudo pero se
pueden realizar de manera rápida gracias a las herramientas de Excel. Sin embargo, siempre hay una o dos tareas que se realizan con
frecuencia y que son de lenta ejecución.
Por ejemplo, puede que desee resaltar las celdas más importantes de una hoja de cálculo cada vez que presente un informe a sus
compañeros. En vez de tener que ejecutar una larga serie de pasos manualmente, puede crear una macro, o serie de acciones
grabadas, que realice estos pasos automáticamente. O, si conoce el lenguaje de programación Microsoft Visual Basic® para
Aplicaciones (VBA), puede escribir una macro personalizada nueva. En cualquier caso, una vez creada la macro podrá ejecutarla,
editarla o eliminarla según le convenga.
Este artículo es una introducción a la programación orientada a objetos y al Editor de Visual Basic, entorno en el que puede escribir
sus propias macros de Excel.
El Editor de Visual Basic es una útil herramienta que le permite ampliar la eficacia y versatilidad de las macros más allá de lo posible
mediante grabación. Para abrirlo, seleccione Macro en el menú Herramientas y haga clic en Editor de Visual Basic (o presione
ALT+F11).
Para abrir una macro específica, seleccione Macro en el menú Herramientas y haga clic en Macros (o presione ALT+F8). En el
cuadro de diálogo Macro, seleccione la macro que desea editar o ver y haga clic en Editar para abrir el Editor de Visual Basic.
En el Editor de Visual Basic, puede utilizar la programación orientada a objetos para crear sus propios programas. Un programa es, en
principio, un mero conjunto de instrucciones que un equipo ejecuta en un orden específico.
En los lenguajes de programación orientada a objetos, todos los aspectos del código informático se basan en los elementos del
entorno. Esos "elementos" se representan como objetos, y todas las acciones y todos los datos están encapsulados en dichos objetos.
En Excel, los objetos pueden ser libros, hojas de cálculo, rangos de celdas o archivos externos.
En general, hay cuatro aspectos de los objetos que se utilizan para desarrollar un programa: propiedades, métodos, eventos y
colecciones.
Propiedades
Resumiendo, las propiedades son variables que describen algunos aspectos del objeto en el que están incluidas. Una propiedad de
objeto común de Excel es Nombre, que encierra el valor identificativo que el usuario o Excel asigna a un libro, a una hoja de cálculo,
a un rango de celdas o a otro objeto. Por ejemplo, si modifica el nombre de una hoja de cálculo (utilizando un código VBA o
haciendo clic con el botón secundario en la ficha de la hoja de cálculo), se modifica el valor guardado en la propiedad Nombre.
Puede definir nuevos valores para algunas propiedades de hoja de cálculo (por ejemplo, el nombre) directamente en VBA. Para
cambiar otras propiedades de hoja de cálculo, es posible que necesite grabar una acción en Excel (por ejemplo, los pasos requeridos
para proteger un rango de celdas) o utilizar un método (tal y como se describe en la siguiente sección).
En VBA, se hace referencia a las propiedades en los programas utilizando la notación con puntos, donde se escribe primero el
nombre del objeto y después el nombre de la propiedad, separando estos dos elementos mediante un punto. Por ejemplo, para
modificar el nombre de una hoja de cálculo, se utiliza la propiedad hojadecálculo.nombre.
Pág.| 36 Métodos
Un método es una acción que un objeto "sabe" como ejecutar. Por ejemplo, probablemente sabe que la hoja de cálculo que se
muestra en la ventana de Excel se conoce como hoja de cálculo activa. En lenguaje VBA de Excel, puede dirigirse a la hoja de cálculo
que desea modificar llamando primero a su método Activar. Una vez ejecutado el método Activar, la hoja de cálculo a la que está
asociado se coloca al frente del resto de las hojas de cálculo en la ventana de Excel, quedando disponible para su edición.
Al igual que ocurre con las propiedades, los métodos se llaman utilizando notación con puntos. Para volver a calcular todas las
fórmulas de una hoja de cálculo, por ejemplo, hay que llamar al método hojadecálculo.calcular.
Eventos
Igual que una propiedad es un atributo cuantificable de un objeto y que un método es una acción que el objeto sabe ejecutar, un
evento es una acción que el objeto "reconoce" que ha ocurrido. Por ejemplo, Excel 2003 reconoce los siguientes eventos (entre otros
muchos):
Se ha guardado un libro.
Se ha seguido un hipervínculo.
Excel incluye varios controladores de eventos, o rutinas de código, que controlan acciones determinadas. Cuando ocurre una de
dichas acciones, y ha comunicado a Excel qué desea que haga cuando ocurra el evento, Excel ejecuta el código del controlador de
eventos. Por ejemplo, si después de crear un nuevo libro desea que Excel muestre todos los libros abiertos como un conjunto de
ventanas en cascada, puede crear el siguiente controlador de eventos:
No se preocupe si no está seguro de qué hace cada uno de los elementos de la rutina del controlador de eventos. Por ahora,
concéntrese en la línea del medio del código, que comunica a Excel que organice las ventanas utilizando el estilo de cascada. Puede
obtener el mismo resultado utilizando los comandos de menú de Excel (menú Ventana, comando Organizar, subcomando Cascada).
Sin embargo, si se trata de una acción que desea que se ejecute cada vez que ocurra un evento determinado, puede utilizar el
lenguaje VBA para que se ejecute automáticamente y así ahorrarse el trabajo.
Colecciones
El elemento final de la programación orientada a objetos con el que debe familiarizarse es la colección. Tal y como indica su nombre,
una colección es un grupo de objetos del mismo tipo contenidos en otro objeto. Por ejemplo, un libro contiene una colección de una
o varias hojas de cálculo. Si desea realizar un mismo cambio en todas las hojas de cálculo de un libro, puede programar el cambio
automático en todas las hojas de cálculo de la colección.
Si ha creado programas antes, seguramente conozca el bucle For...Next, que permite repetir un grupo de instrucciones varias veces
utilizando algo como la siguiente secuencia. (En este ejemplo se agrega la ruta de directorio del libro activo a la sección derecha del
pie de página en las primeras tres hojas de cálculo.)
For i = 1 to 3
Pág.| 37
Worksheets(i).PageSetup.RightFooter = Path
Next i
El inconveniente de codificar (es decir, asignar un valor determinado a) el límite superior de este bucle For…Next es que será
necesario cambiar el código cada vez que se agregue o elimine una hoja de cálculo. Esto no es grave si se tiene que hacer una o dos
veces, pero si está administrando muchos códigos, probablemente olvide cambiarlo en algunos sitios. Esto generará errores que
tendrá que solucionar. Lo que es peor, es posible que los errores pasen inadvertidos hasta que el responsable de calidad descubra
que las 500 copias impresas del informe anual no tienen el formato correcto (y que cuando esto ocurra tenga apagado el móvil
porque esté dando un paseo por la playa).
Puede utilizar un código para que le devuelva el número de hojas de cálculo que se incluyen en el libro, pero hay un modo más
sencillo de hacer esto: utilizar un bucle For Each…Next. Los bucles For Each…Next buscan el número de objetos que hay en una
colección, por ejemplo las hojas de cálculo de un libro, y pasan por todos ellos. Utilizando esta técnica, el código anterior se puede
escribir de este modo:
En vez de incrementar el valor en un bucle For…Next estándar, el bucle For Each…Next busca simplemente el siguiente elemento de
la colección Worksheets (hojas de cálculo) y se detiene cuando no encuentra uno.
El Editor de Visual Basic muestra distinta información en distintas ventanas. Es importante conocer las siguientes ventanas cuando se
está aprendiendo a escribir macros: la ventana Explorador del proyecto, la ventana Propiedades y la ventana Código.
Cada uno de los elementos principales que se utilizan en los proyectos VBA se guarda en una carpeta independiente en cada
proyecto. Estos elementos son:
Módulos de clase, que son definiciones de los objetos definidos por usuario creados para el libro
Formularios de usuario, que ofrecen una superficie visible en la que se pueden colocar controles gráficos, como botones,
imágenes y áreas de texto
En el siguiente ejemplo, el libro actual está identificado como VBAProject. Las tres hojas de cálculo incluidas en el libro (Hoja1, Hoja2
y Hoja3), así como el libro completo (EsteLibro), aparecen en la carpeta Objetos de Microsoft Office Excel. Las macros programadas
en VBA o grabadas aparecen en la carpeta Módulos. Todos los módulos de clase o formularios de usuario aparecen en la carpeta
Módulos de clase o Formularios, respectivamente.
Pág.| 38
Ventana Propiedades
Justo debajo de la ventana Explorador del proyecto, se encuentra la ventana Propiedades, que se utiliza para examinar y modificar
las distintas propiedades asociadas al objeto seleccionado. La única propiedad que suele estar disponible para los módulos es el
nombre. Las hojas de cálculo tienen propiedades adicionales que se pueden modificar, como StandardWidth y DisplayPageBreaks.
La modificación de propiedades en la ventana Propiedades se suele realizar cuando se trabaja con formularios de usuario.
NOTA El nombre que se muestra en el cuadro Nombre de la ventana Propiedades correspondiente a un objeto no tiene que
coincidir necesariamente con el nombre del objeto en Excel. Puede que sean similares, pero probablemente sean distintos debido a
las reglas de nombre predeterminadas que utiliza el Editor de Visual Basic para los objetos. (Por ejemplo, los nombres no pueden
incluir espacios en blanco, deben comenzar con una letra, no pueden ser palabras reservadas y no pueden tener una longitud
superior a 31 caracteres.) Incluso cuando los nombres son distintos, deben estar vinculados internamente para garantizar que se hace
referencia al objeto adecuado.
Ventana Código
La ventana Código es la ventana de mayor tamaño del Editor de Visual Basic e incluye en su lado superior dos cuadros desplegables.
El cuadro desplegable de la izquierda (cuadro Objeto) se utiliza para seleccionar el objeto en el que se quiere trabajar. Cuando se
trabaja sólo con código, el cuadro muestra el objeto General predeterminado. El segundo cuadro desplegable (cuadro
Procedimiento) se utiliza para seleccionar macros individuales del módulo actual. Según se agreguen o eliminen macros en el
módulo, se agregarán y eliminarán en el cuadro Procedimiento.
También puede utilizar las teclas de FLECHA ARRIBA o FLECHA ABAJO para desplazarse por las listas del código y buscar la macro
que desea. Conforme se vaya desplazando por el código, el cuadro Procedimiento se irá actualizando para reflejar la macro actual.
Pág.| 39
Propiedades de Excel VB
Propiedades Descripción
Métodos Descripción
SharePointVersion
AutoCorrect
Propiedades Descripción
AutoFilter
Propiedades Descripción
Devuelve True si la hoja está en el modo de filtrado Autofiltro. Valor Boolean de sólo
FilterMode
lectura.
Métodos Descripción
Axis
Propiedades Descripción
AxisTitle
Propiedades Descripción
Border
Propiedades Descripción
Borders
Propiedades Descripción
Chart
Propiedades Descripción
Métodos Descripción
ChartArea
Propiedades Descripción
ChartObjects
Propiedades Descripción
ChartTitle
Propiedades Descripción
True si el título del gráfico ocupará el espacio de diseño del gráfico cuando se
IncludeInLayout determine dicho diseño del gráfico. El valor predeterminado es True. Valor Boolean
de lectura y escritura.
ColorFormat
Propiedades Descripción
CubeField
Propiedades Descripción
IsDate Devuelve True si el valor de CubeField es una fecha. Boolean de sólo lectura.
Métodos Descripción
DataLabel
Propiedades Descripción
DataLabels
Propiedades Descripción
DataTable
Propiedades Descripción
DisplayUnitLabel
Propiedades Descripción
Devuelve o establece la posición del rótulo de las unidades de un eje del gráfico.
Position
Valor XlChartElementPosition de lectura y escritura.
Pág.| 45 DownBars
Propiedades Descripción
DropLines
Propiedades Descripción
ErrorBars
Propiedades Descripción
ErrorCheckingOptions
Propiedades Descripción
FillFormat
Propiedades Descripción
Devuelve o establece si el estilo de relleno debe girar junto con el objeto. Valor
RotateWithObject
MsoTriState de lectura y escritura.
Floor
Propiedades Descripción
Devuelve o establece un valor Long que especifica el grosor del plano inferior. Lectura
Thickness
y escritura.
Font
Propiedades Descripción
FormatCondition
Propiedades Descripción
Devuelve o establece un valor String que especifica el texto usado por la regla de
Text
formato condicional.
Pág.| 47 Devuelve o establece una de las constantes de la enumeración
TextOperator XlContainsOperator, que especifican la búsqueda de texto realizada por la regla de
formato condicional.
FormatRow Devuelve o establece un valor Boolean que especifica si se debe aplicar formato a
la fila completa de tabla de Excel en caso de que la regla de formato condicional
dé como resultado True. El valor predeterminado es False.
Métodos Descripción
Establece el valor de prioridad para esta regla de formato condicional en "1" para
SetFirstPriority
que se evalúe antes que todas las demás reglas en la hoja de cálculo.
FormatConditions
Métodos Descripción
Devuelve un objeto Top10 que representa una regla de formato condicional para el
AddTop10
rango especificado.
Gridlines
Pág.| 48 Propiedades Descripción
HiLoLines
Propiedades Descripción
Interior
Propiedades Descripción
Devuelve o establece una trama de tinte y sombreado para un objeto Interior. Valor
PatternTintAndShade
Variant de lectura y escritura.
LeaderLines
Propiedades Descripción
Legend
Propiedades Descripción
True si una leyenda ocupará el espacio de diseño del gráfico cuando se determine
IncludeInLayout dicho diseño del gráfico. El valor predeterminado es True. Valor Boolean de lectura y
escritura.
LegendEntry
Propiedades Descripción
LegendKey
Pág.| 49 Propiedades Descripción
ListColumn
Propiedades Descripción
Devuelve un objeto Range que tiene el tamaño de la parte de datos de una columna.
DataBodyRange
Sólo lectura.
ListObject
Propiedades Descripción
Métodos Descripción
Name
Propiedades Descripción
WorkbookParameter
PageSetup
Propiedades Descripción
Pane
Métodos Descripción
PivotCache
Propiedades Descripción
WorkbookConnection Establece una conexión entre el libro actual y el objeto PivotCache. Sólo lectura.
PivotCaches
Métodos Descripción
PivotCell
Propiedades Descripción
Devuelve el objeto PivotLine de una fila para un objeto PivotCell específico. PivotLine
PivotRowLine
de sólo lectura.
PivotField
Propiedades Descripción
Esta propiedad se utiliza para ocultar los distintos niveles de una jerarquía
Hidden
OLAP. Valor Boolean de lectura y escritura.
Métodos Descripción
Este método elimina todos los filtros de rótulo o todos los filtros de fecha
ClearLabelFilters
de la colección PivotFilters del campo dinámico.
PivotItem
Métodos Descripción
PivotTable
Propiedades Descripción
ShowTableStyleLastColumn
Métodos Descripción
Este método cambia la ubicación del subtotal para todos los campos
dinámicos existentes. Cambiar la ubicación del subtotal tiene un efecto
SubtotalLocation
visual inmediato sólo para los campos en formato de diseño, pero se
establecerá también para los campos que están en formato tabular.
ClearTable El método ClearTable sirve para borrar una tabla dinámica. Cuando se
borra una tabla dinámica, se quitan todos los campos y se eliminan todos
Pág.| 56 los filtros y criterios de ordenación aplicados. Este método restablece la
tabla dinámica al estado que tenía cuando se creó, antes de que se
agregaran campos.
PlotArea
Propiedades Descripción
Point
Propiedades Descripción
Has3DEffect True si un punto tiene aspecto tridimensional. Valor Boolean de lectura y escritura.
QueryTable
Propiedades Descripción
Sort Devuelve el criterio de ordenación del rango de la tabla de consulta. Sólo lectura.
Range
Propiedades Descripción
MDX Devuelve el nombre MDX del objeto Range especificado. String de sólo lectura.
Métodos Descripción
Pág.| 57
Series
Propiedades Descripción
SeriesLines
Propiedades Descripción
ShadowFormat
Propiedades Descripción
Shape
Propiedades Descripción
HasChart Devuelve si una forma contiene un gráfico. Valor MsoTriState de sólo lectura.
Pág.| 58
ShapeRange
Propiedades Descripción
HasChart Devuelve si un rango de forma contiene un gráfico. Valor MsoTriState de sólo lectura.
Shapes
Métodos Descripción
Pág.| 59 AddChart Crea un gráfico en la ubicación especificada de la hoja activa.
Tab
Propiedades Descripción
ThreeDFormat
Propiedades Descripción
Métodos Descripción
TickLabels
Propiedades Descripción
Trendline
Propiedades Descripción
UpBars
Propiedades Descripción
Pág.| 61 Format Devuelve el objeto ChartFormat. Sólo lectura.
Walls
Propiedades Descripción
Devuelve o establece un valor Long que especifica el grosor del plano. Lectura y
Thickness
escritura.
Window
Propiedades Descripción
DisplayWhitespace True si se muestran los espacios en blanco. Valor Boolean de lectura y escritura.
Workbook
Propiedades Descripción
Devuelve una cadena String que especifica el nombre del proveedor del
EncryptionProvider algoritmo de cifrado que utiliza Microsoft Office Excel 2007 para cifrar los
documentos. Lectura y escritura.
ConnectionsDisabled
Métodos Descripción
Pág.| 63
Eventos Descripción
Worksheet
Propiedades Descripción
Métodos Descripción
WorksheetFunction
Métodos Descripción
Devuelve la función Bessel modificada, que equivale a las funciones Bessel evaluadas
BesselK
para argumentos puramente imaginarios.
Devuelve un número que indica dónde está situada la semana numéricamente dentro
WeekNum
un año.
Devuelve un número que representa una fecha que es el número de días laborables
antes o después de una fecha (la fecha inicial). Los días laborables excluyen los días
WorkDay de fin de semana y cualquier fecha identificada como día festivo. Use WORKDAY para
excluir fines de semana o días festivos cuando calcule fechas de vencimiento de
facturas, las fechas de entrega esperadas o el número de días de trabajo realizados.
Calcula la fracción de año que representa el número de días completos entre los
argumentos de fecha inicial y fecha final. Utilice la función YEARFRAC para determinar
YearFrac
la proporción de los beneficios u obligaciones de todo un año que corresponde a un
período específico.
Devuelve el rendimiento anual de un valor bursátil con descuento. Por ejemplo, para
YieldDisc
una letra del Tesoro.
YieldMat Devuelve el rendimiento anual de un valor bursátil que paga intereses al vencimiento.
TBillEq Devuelve el rendimiento de un bono equivalente a una letra del Tesoro (de EE.UU.).
TBillPrice Devuelve el precio por 100 $ de valor nominal de una letra del Tesoro (de EE.UU.).
Devuelve el cociente del factorial de una suma de valores con respecto al producto de
MultiNomial
factoriales.
Devuelve la tasa nominal del interés anual, si se conocen la tasa efectiva y el número
Nominal
de períodos de interés compuesto por año.
Devuelve el precio por 100 $ de valor nominal de un valor bursátil que paga una tasa
Price
de interés periódica.
PriceDisc Devuelve el precio por 100 $ de valor nominal de un valor bursátil con descuento.
Devuelve el precio por 100 $ de valor nominal de un valor bursátil que genera
PriceMat
intereses al vencimiento.
Devuelve la parte entera de una división. Use este método cuando desee descartar el
Quotient
resto de una división.
Devuelve un número entero aleatorio entre los números que especifique. Devuelve
RandBetween
un nuevo número entero aleatorio cada vez que se calcula la hoja de cálculo.
Devuelve el número de serie que representa la fecha que indica el número de meses
anteriores o posteriores a la fecha especificada (argumento de fecha inicial). Use
EDate
EDate para calcular las fechas de vencimiento que caen en el mismo día del mes que
el día de emisión.
Devuelve la tasa efectiva del interés anual, si se conocen la tasa de interés anual
Effect
nominal y el número de períodos de interés compuesto por año.
EoMonth Devuelve el número de serie del último día del mes, anterior o posterior a la fecha
inicial del número de mes indicado. Use el EOMONTH para calcular las fechas de
Pág.| 67 vencimiento que caen en el último día del mes.
Devuelve el valor futuro de un capital inicial después de aplicar una serie de tasas de
FVSchedule interés compuesto. Utilice FVSCHEDULE para calcular el valor futuro de una inversión
con una tasa variable o ajustable.
Devuelve el máximo común divisor de dos o más números enteros. El máximo común
Gcd divisor es el mayor número entero por el que son divisibles los argumentos de
número 1 y número 2 sin dejar resto.
ImLog10 Devuelve el logaritmo común (en base 10) de un número complejo con el formato de
Pág.| 68 texto x + yi o x + yj.
AccrInt Devuelve el interés devengado de un valor bursátil que paga intereses periódicos.
Cuenta las celdas contenidas en un rango que no están en blanco y que cumplen
CountIfs
varios criterios.
Devuelve el número de días desde el principio del período de un cupón hasta la fecha
CoupDayBs
de liquidación.
Devuelve el número de días del período (entre dos cupones) donde se encuentra la
CoupDays
fecha de liquidación.
Devuelve el número de días desde la fecha de liquidación hasta la fecha del próximo
CoupDaysNc
cupón.
Devuelve un número que representa la fecha del próximo cupón desde la fecha de
CoupNcd
liquidación.
Devuelve el promedio (media aritmética) de todas las celdas que cumplen varios
AverageIfs
criterios.
Devuelve la función Bessel modificada, que equivale a la función Bessel evaluada para
BesselI
argumentos puramente imaginarios.
XmlMap
Propiedades Descripción
WorkbookConnection Devuelve una nueva conexión para el objeto XMLMap especificado. Sólo lectura.
Pág.| 70
If...Then...Else (Instrucción)
Sintaxis
If condición Then
[instrucciones]
[Else
[instrucciones_else]]
End If
Parte Descripción
Una expresión numérica o expresión de cadena que puede ser evaluada como True o False. Si
Pág.| 71 condición es Null, condición se considera False.
instrucciones Opcional en formato de bloque; se requiere en formato de línea sencilla que no tenga una
cláusula Else. Una o más instrucciones separadas por dos puntos ejecutados si la condición es
True.
instrucciones_else Opcional. Una o más instrucciones ejecutadas si ninguna de las expresiones anteriores
condición o condición-n es True.
Comentarios
Puede utilizar la forma de una sola línea (Sintaxis 1) para pruebas cortas y sencillas. Sin
embargo, el formato de bloque (Sintaxis 2) proporciona más estructura y flexibilidad que la
forma de línea simple y, generalmente, es más fácil de leer, de mantener y de depurar.
Nota Con la sintaxis es posible ejecutar múltiples instrucciones como resultado de una decisión If...Then, pero todas deben
estar en la misma línea y separadas por dos puntos, como en la instrucción siguiente:
If A > 10 Then A = A + 1 : B = B + A : C = C + B
Una instrucción con formato de bloque If debe ser la primera de la línea. Las partes Else,
ElseIf y End If, de la instrucción, solamente pueden ir precedidas de un número de línea o
una etiqueta de línea. El bloque If debe terminar con una instrucción End If.
Para determinar si una instrucción If es un bloque, examine lo que sigue a la palabra clave
Then. Si lo que aparece detrás de Then en la misma línea no es un comentario, la
instrucción se considera como una instrucción If de una sola línea.
Las cláusulas Else y ElseIf son opcionales. Puede tener en un bloque ElseIf, tantas
cláusulas If como desee, pero ninguna puede aparecer después de una cláusula Else. Las
instrucciones de bloque If se pueden anidar; es decir, unas pueden contener a otras.
Nota No se puede usar TypeOf con tipos de datos predefinidos como Long, Integer y así sucesivamente, excepto en el tipo de
datos Object.
Para ejecutar una sola instrucción cuando una condición es True, se puede usar la sintaxis
de línea única de la instrucción If...Then...Else. El siguiente ejemplo muestra la sintaxis de
línea única, en la que se omite el uso de la palabra clave Else:
Sub FijarFecha()
miFecha = #13/2/95#
If miFecha < Now Then miFecha = Now
End Sub
Para ejecutar más de una línea de código, es preciso utilizar la sintaxis de múltiples líneas.
Esta sintaxis incluye la instrucción End If, tal y como muestra el siguiente ejemplo:
Use una instrucción If...Then...Else para definir dos bloques de instrucciones ejecutables:
un bloque que se ejecutará cuando la condición es True y el otro que se ejecutará si la
condición es False.
Sub AvisoUsuario(valor as Long)
Pág.| 73
If valor = 0 Then
Aviso.ForeColor = vbRed
Aviso.Font.Bold = True
Aviso.Font.Italic = True
Else
Aviso.Forecolor = vbBlack
Aviso.Font.Bold = False
Aviso.Font.Italic = False
End If
End Sub
Ejecuta uno de varios grupos de instrucciones, dependiendo del valor de una expresión.
Sintaxis
End Select
lista_expresión-n Requerido si aparece la palabra clave Case. Lista delimitada por comas de una o más de las
formas siguientes: expresión, expresión To expresión, Is expresión operador_de_comparación.
La palabra clave especifica un intervalo de valores. Si se utiliza la palabra clave To, el valor
menor debe aparecer antes de To. Utilice la palabra clave Is con operadores de comparación
(excepto Is y Like) para especificar un intervalo de valores. Si no se escribe, la palabra clave Is
se insertará automáticamente.
instrucciones-n Opcional. Una o más instrucciones ejecutadas si expresión_prueba coincide con cualquier
parte de lista_expresión-n.
instrucciones_ Opcional. Una o más instrucciones que se ejecuten si expresión_prueba no coincide con nada
else de la cláusula Case.
Comentarios
La cláusula Case Else se utiliza para indicar las instrucciones que se van a ejecutar si no se
encuentran coincidencias entre expresión_prueba y una lista_expresión en cualquiera de las
otras selecciones de Case. Aunque no es necesario, es buena idea tener una instrucción
Case Else en el bloque Select Case para controlar valores imprevistos de
expresión_prueba. Cuando no hay una instrucción Case Else y ninguna expresión de la
lista en las cláusulas Case coincide con la expresión de prueba, la ejecución continúa en la
instrucción que sigue a End Select.
Se pueden utilizar expresiones múltiples o intervalos en cada cláusula Case. Por ejemplo, la
línea siguiente es válida:
Nota El operador de comparación Is no es lo mismo que la palabra clave Is utilizada en la instrucción Select Case.
Sub Bips()
For x = 1 To 50
Beep
Next x
End Sub
Sub DosTotal()
For j = 2 To 10 Step 2
total = total + j
Next j
MsgBox "El total es " & total
End Sub
Para disminuir la variable contador utilice un valor negativo en Step. Para disminuir la
variable contador es preciso especificar un valor final que sea menor que el valor inicial. En
el siguiente ejemplo, la variable contador miNum se disminuye en 2 cada vez que se repite el
bucle. Cuando termina la ejecución del bucle, total representa la suma de 16, 14, 12, 10, 8,
6, 4 y 2.
Sub NuevoTotal()
For miNum = 16 To 2 Step -2
total = total + miNum
Next miNum
MsgBox "El total es " & total
End Sub
Nota No es necesario incluir el nombre de la variable contador después de la instrucción Next. En los ejemplos anteriores, el
nombre de la variable contador se ha incluido para facilitar la lectura del código.
Se puede abandonar una instrucción For...Next antes de que el contador alcance su valor
final, para ello se utiliza la instrucción Exit For. Por ejemplo, si se produce un error se
puede usar la instrucción Exit For en el bloque de instrucciones True de una instrucción
If...Then...Else o Select Case que detecte específicamente ese error. Si el error no se
produce, la instrucción If…Then…Else es False y el bucle continuará ejecutándose
normalmente.
Pág.| 77
Las instrucciones For Each...Next repiten un bloque de instrucciones para cada uno de los
objetos de una colección o para cada elemento de una matriz. Visual Basic asigna valor
automáticamente a una variable cada vez que se ejecuta el bucle. Por ejemplo, el siguiente
procedimiento cierra todos los formularios excepto el que contiene al procedimiento que se
está ejecutando.
Sub CierraFormul()
For Each frm In Application.Forms
If frm.Caption <> Screen.ActiveForm.Caption Then frm.Close
Next
End Sub
El siguiente código recorre todos los elementos de una matriz e introduce en cada uno de
ellos el valor de la variable índice I.
Se puede usar el bucle For Each...Next para recorrer las celdas pertenecientes a un rango
determinado. El siguiente procedimiento recorre las celdas del rango A1:D10 de la Página1
y convierte cualquier valor absoluto menor de 0,01 en 0 (cero).
Sub RedondeoACero()
For Each miObjeto in miColeccion
If Abs(miObjeto.Value) < 0.01 Then miObjeto.Value = 0
Next
End Sub
Se puede salir de un bucle For Each...Next mediante la instrucción Exit For. Por ejemplo,
cuando se produce un error se puede usar la instrucción Exit For en el bloque de
Pág.| 78 instrucciones True de una instrucción If...Then...Else o Select Case que detecte
específicamente el error. Si el error no se produce, la instrucción If…Then…Else es False
y el bucle se seguirá ejecutando normalmente.
El siguiente ejemplo detecta la primera celda del rango A1:B5 que no contiene un número.
Si se encuentra una celda en esas condiciones, se presenta un mensaje en pantalla y Exit
For abandona el bucle.
Sub BuscaNumeros()
For Each miObjeto In MiColeccion
If IsNumeric(miObjeto.Value) = False Then
MsgBox "El objeto contiene un valor no numérico."
Exit For
End If
Next c
End Sub
Sintaxis
Next [elemento]
Parte Descripción
elemento Requerido. Variable que se utiliza para iterar por los elementos del conjunto o matriz. Para
conjuntos, elemento solamente puede ser una variable del tipo Variant, una variable de
objeto genérica o cualquier variable de objeto específica. Para matrices, elemento solamente
puede ser una variable tipo Variant.
grupo Requerido. Nombre de un conjunto de objetos o de una matriz (excepto una matriz de tipos
definidos por el usuario).
instrucciones Opcional. Una o más instrucciones que se ejecutan para cada elemento de un grupo.
Pág.| 79 Comentarios
La entrada al bloque For Each se produce si hay al menos un elemento en grupo. Una vez
que se ha entrado en el bucle, todas las instrucciones en el bucle se ejecutan para el primer
elemento en grupo. Después, mientras haya más elementos en grupo, las instrucciones en el
bucle continúan ejecutándose para cada elemento. Cuando no hay más elementos en el
grupo, se sale del bucle y la ejecución continúa con la instrucción que sigue a la instrucción
Next.
Puede anidar bucles For Each...Next, colocando un bucle For Each...Next dentro de otro.
Sin embargo, cada elemento del bucle debe ser único.
Nota Si omite elemento en una instrucción Next, la ejecución continúa como si se hubiera incluido. Si se encuentra una
instrucción Next antes de su instrucción For correspondiente, se producirá un error.
No se puede utilizar la instrucción For Each...Next con una matriz de tipos definidos por el
usuario porque un tipo Variant no puede contener un tipo definido por el usuario.
While
Hay dos formas de utilizar la palabra clave While para comprobar el estado de una
condición en una instrucción Do...Loop. Se puede comprobar la condición antes de entrar
en el bucle, o después de que el bucle se haya ejecutado al menos una vez.
Sub ComPrimeroWhile()
contador = 0
miNum = 20
Pág.| 80
Do While miNum > 10
miNum = miNum - 1
contador = contador + 1
Loop
MsgBox "El bucle se ha repetido " & contador & " veces."
End Sub
Sub ComFinalWhile()
contador = 0
miNum = 9
Do
miNum = miNum - 1
contador = contador + 1
Loop While miNum > 10
MsgBox "El bucle se ha repetido " & contador & " veces."
End Sub
Until
Hay dos formas de utilizar la palabra clave Until para comprobar el estado de una
condición en una instrucción Do...Loop. Se puede comprobar la condición antes de entrar
en el bucle (como muestra el procedimiento ComPrimeroUntil) o se pueden comprobar después
de que el bucle se haya ejecutado al menos una vez (como muestra el procedimiento
ComFinalUntil). El bucle sigue ejecutándose mientras la condición siga siendo False.
Sub ComPrimeroUntil()
contador = 0
miNum = 20
Do Until miNum = 10
miNum = miNum - 1
contador = contador + 1
Loop
MsgBox "El bucle se ha repetido " & contador & " veces."
End Sub
Sub ComFinalUntil()
contador = 0
miNum = 1
Do
miNum = miNum + 1
contador = contador + 1
Loop Until miNum = 10
MsgBox "El bucle se ha repetido " & counter & " veces."
End Sub
Pág.| 81
Es posible salir de Do...Loop usando la instrucción Exit Do. Por ejemplo, para salir de un
bucle sin fin, se puede usar la instrucción Exit Do en el bloque de instrucciones True de
una instrucción If...Then...Else o Select Case. Si la condición es False, el bucle seguirá
ejecutándose normalmente.
En el siguiente ejemplo, se asigna a miNum un valor que crea un bucle sin fin. La instrucción
If...Then...Else comprueba esa condición y ejecuta entonces la salida, evitando así el bucle
sin fin.
Sub EjemploSalida()
contador = 0
miNum = 9
Do Until miNum = 10
miNum = miNum - 1
contador = contador + 1
If miNum < 10 Then Exit Do
Loop
MsgBox "El bucle se ha repetido " & contador & " veces."
End Sub
Nota Para detener la ejecución de un bucle sin fin, presione la tecla ESC o CTRL+PAUSE.
Do...Loop (Instrucción)
Repite un bloque de instrucciones cuando una condición es True o hasta que una condición
se convierta en True.
Sintaxis
Loop
O bien, puede utilizar esta sintaxis:
Pág.| 82
Do
[instrucciones]
[Exit Do]
[instrucciones]
Parte Descripción
condición Opcional. Expresión numérica o expresión de cadena que es True o False. Si la condición es Null,
condición se considera False.
Instrucciones Una o más instrucciones que se repiten mientras o hasta que condición sea True.
Comentarios
Para crear un libro en Visual Basic, utilice el método Add. El siguiente procedimiento crea un libro. Microsoft Excel
asigna automáticamente el nombre BookN al libro, donde N es el siguiente número disponible. El nuevo
libro se convertirá en el libro activo.
Sub AddOne()
Workbooks.Add
End Sub
Una forma mejor de crear un libro es asignarlo a una variable de objeto. En el siguiente ejemplo, el objeto
Workbook devuelto por el método Add se asigna a la variable de objeto, newBook. A continuación, se establecen
varias de las propiedades de newBook. Puede controlar fácilmente el nuevo libro utilizando la variable
de objeto.
Sub AddNew()
Set NewBook = Workbooks.Add
With NewBook
.Title = "All Sales"
.Subject = "Sales"
.SaveAs Filename:="Allsales.xls"
End With
End Sub
Utilice la función Array para identificar un grupo de hojas. El siguiente ejemplo selecciona
tres hojas del libro activo.
Pág.| 84 Sub Several()
Worksheets(Array("Sheet1", "Sheet2", "Sheet4")).Select
End Sub
Un número de índice es un número secuencial asignado a una hoja, según la posición de su ficha, contando desde la
izquierda, respecto a las hojas del mismo tipo. El siguiente procedimiento utiliza la propiedad Worksheets para
activar la hoja de cálculo uno del libro activo.
Sub FirstOne()
Worksheets(1).Activate
End Sub
Si desea trabajar con todos los tipos de hojas (hojas de cálculo, de gráficos, de módulos y de diálogo), utilice la
propiedad Sheets. El siguiente procedimiento activa la hoja cuatro del libro.
Sub FourthOne()
Sheets(4).Activate
End Sub
Puede identificar las hojas por su nombre, utilizando las propiedades Worksheets y Charts. Las siguientes
instrucciones activan varias hojas del libro activo.
Worksheets("Sheet1").Activate
Charts("Chart1").Activate
DialogSheets("Dialog1").Activate
Puede utilizar la propiedad Sheets para devolver una hoja de cálculo, de gráficos, de módulo o de cuadro de
diálogo, incluidos todos en la colección Sheets. El siguiente ejemplo activa la hoja denominada "Chart1"
del libro activo.
Sub ActivateChart()
Sheets("Chart1").Activate
End Sub
Pág.| 85 Nota
Los gráficos incrustados en una hoja de cálculo son miembros de la colección ChartObjects, aunque los gráficos que poseen sus
propias hojas pertenecen a la colección Charts.
Al aplicar la propiedad Cells a una hoja de cálculo sin especificar un número de índice, el método devuelve un objeto
Range que representa todas las celdas de la hoja de cálculo. El siguiente procedimiento Sub borra el contenido
de todas las celdas de la hoja Sheet1 del libro activo.
Sub ClearSheet()
Worksheets("Sheet1").Cells.ClearContents
End Sub
Puede hacer referencia a una celda o rango de celdas del estilo de referencia A1 utilizando el método
Range. La siguiente subrutina cambia el formato de las celdas A1:D5 a negrita.
Sub FormatRange()
Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _
.Font.Bold = True
End Sub
Referencia Significado
Range("A1") Celda A1
Range("A1:B5") Celdas de la A1 a la B5
Range("C5:D9;G9:H16") Selección de varias áreas
Range("A:A") Columna A
Range("1:1") Fila 1
Range("A:C") Columnas de la A a la C
Range("1:5") Filas de la 1 a la 5
Range("1:1;3:3;8:8") Filas 1, 3 y 8
Range("A:A;C:C;F:F") Columnas A, C y F
Si establece una variable de objeto para un objeto Range, puede manipular fácilmente el rango
utilizando el nombre de la variable.
El siguiente procedimiento crea la variable de objeto myRange y, a continuación, asigna la variable al
Pág.| 86 rango A1:D5 de la hoja Sheet1 del libro activo. Las instrucciones posteriores modifican las propiedades
del rango, sustituyendo el nombre de la variable por el objeto Range.
Sub Random()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:D5")
myRange.Formula = "=RAND()"
myRange.Font.Bold = True
End Sub
Utilice la propiedad Rows o Columns para trabajar con filas o columnas enteras. Estas propiedades devuelven un
objeto Range que representa un rango de celdas. En el siguiente ejemplo, Rows(1) devuelve la fila uno de la hoja
Sheet1. A continuación, la propiedad Bold del objeto Font del rango se establece en True.
Sub RowBold()
Worksheets("Sheet1").Rows(1).Font.Bold = True
End Sub
La siguiente tabla muestra algunas referencias de fila y columna, utilizando las propiedades Rows y Columns.
Referencia Significado
Rows(1) Fila uno
Rows Todas las filas de la hoja de cálculo
Columns(1) Columna uno
Columns("A") Columna uno
Columns Todas las columnas de la hoja de cálculo
Para trabajar con varias filas o columnas al mismo tiempo, cree una variable de objeto y utilice el método Union,
combinando varias llamadas a la propiedad Rows o Columns. El siguiente ejemplo cambia a negrita el
formato de las filas uno, tres y cinco de la hoja de cálculo uno del libro activo.
Sub SeveralRows()
Worksheets("Sheet1").Activate
Dim myUnion As Range
Set myUnion = Union(Rows(1), Rows(3), Rows(5))
myUnion.Font.Bold = True
End Sub
Pág.| 87 Cómo: Hacer referencia a celdas utilizando números de índice
Puede utilizar la propiedad Cells para hacer referencia a una sola celda utilizando los números de fila y de columna.
Esta propiedad devuelve un objeto Range que representa una sola celda. En el siguiente ejemplo, Cells(6,1)
devuelve la celda A6 de la hoja Sheet1. Entonces, la propiedad Value se establece en 10.
Sub EnterValue()
Worksheets("Sheet1").Cells(6, 1).Value = 10
End Sub
Sub CycleThrough()
Dim Counter As Integer
For Counter = 1 To 20
Worksheets("Sheet1").Cells(Counter, 3).Value = Counter
Next Counter
End Sub
Nota
Si desea cambiar las propiedades de un rango de celdas al mismo tiempo (o aplicarles un método), utilice la propiedad Range.
Para obtener más información, vea Hacer referencia a celdas y rangos utilizando la notación A1.
Puede utilizar el estilo de referencia A1 o un rango con nombre entre paréntesis como método abreviado para la
propiedad Range. No es necesario escribir la palabra "Range" o utilizar comillas, como se muestra en
los siguientes ejemplos.
Sub ClearRange()
Worksheets("Sheet1").[A1:B5].ClearContents
End Sub
Sub SetValue()
[MyRange].Value = 30
End Sub
Puede hacer referencia a varios rangos con la propiedad Range, pero insertando comas entre dos o más
referencias. El siguiente ejemplo borra el contenido de los tres rangos de la hoja Sheet1.
Sub ClearRanges()
Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18"). _
ClearContents
End Sub
Sub ClearNamed()
Range("MyRange, YourRange, HisRange").ClearContents
End Sub
Sub MultipleRange()
Dim r1, r2, myMultipleRange As Range
Set r1 = Sheets("Sheet1").Range("A1:B2")
Set r2 = Sheets("Sheet1").Range("C3:D4")
Set myMultipleRange = Union(r1, r2)
myMultipleRange.Font.Bold = True
End Sub
Sub FormatRange()
Range("MyBook.xls!MyRange").Font.Italic = True
End Sub
El siguiente ejemplo hace referencia al rango de hojas de cálculo específico denominado "Sheet1!
Sales" en el libro "MyBook.xls".
Sub FormatSales()
Range("[Report.xls]Sheet1!Sales").BorderAround Weight:=xlthin
End Sub
Para seleccionar un rango con nombre utilice el método GoTo, que activa el libro y la hoja de cálculo y, a
continuación, selecciona el rango.
Sub ClearRange()
Application.Goto Reference:="MyBook.xls!MyRange"
Selection.ClearContents
End Sub
El siguiente ejemplo muestra cómo se escribiría el mismo procedimiento para el libro activo.
Sub ClearRange()
Application.Goto Reference:="MyRange"
Selection.ClearContents
End Sub
Sub ApplyColor()
Const Limit As Integer = 25
For Each c In Range("MyRange")
If c.Value > Limit Then
Pág.| 90 c.Interior.ColorIndex = 27
End If
Next c
End Sub
Con el botón secundario del mouse (ratón), haga clic en un control en modo de diseño y, a continuación,
haga clic en Propiedades para mostrar la ventana Propiedades.
Puede iniciar los controles en un procedimiento antes de mostrar un formulario, o puede agregar código
al evento Initialize del formulario.
Todos los controles tienen un conjunto de eventos predefinidos. Por ejemplo, un botón de comando tiene
un evento Click que se produce cuando el usuario hace clic en él. Puede escribir los procedimientos de
eventos que se ejecutarán cuando se produzca el evento.
Puede inicializar los controles en tiempo de ejecución utilizando código de Visual Basic en una macro. Por ejemplo,
puede rellenar un cuadro de lista, establecer los valores del texto o establecer los botones de opción.
También puede utilizar el código en el evento Initialize de un formulario para establecer los valores iniciales de los
controles del formulario. Una ventaja de establecer los valores iniciales del control en el evento Initialize es que el
código de inicialización permanece en el formulario. Puede copiar el formulario de otro proyecto y, al ejecutar el
método Show para mostrar el cuadro de diálogo, los controles se inicializarán.
En este tema se incluye información específica sobre la utilización de controles ActiveX en hojas de cálculo y en hojas
de gráficos. Para obtener información general sobre la manera de agregar y utilizar los controles, consulte Usar
controles ActiveX en un documento y Crear un cuadro de diálogo personalizado.
Tenga en cuenta los siguientes puntos cuando utilice controles en las hojas de cálculo:
Además de las propiedades estándar que existen para los controles ActiveX, en Microsoft Excel se pueden
usar las siguientes propiedades con estos controles: BottomRightCell, LinkedCell, ListFillRange,
Placement, PrintObject, TopLeftCell y ZOrder.
Set t = Sheet1.CommandButton1.TopLeftCell
With ActiveWindow
.ScrollRow = t.Row
.ScrollColumn = t.Column
End With
Algunos métodos y propiedades de Visual Basic de Microsoft Excel se deshabilitan cuando se activa un
control ActiveX. Por ejemplo, el método Sort no puede utilizarse mientras esté activo un
control, por lo que el código que se muestra a continuación origina un error en un
Pág.| 92 procedimiento de evento clic de botón ya que el control sigue activo cuando el usuario
hace clic.
Este problema puede evitarse si se activa otro elemento en la hoja antes de utilizar el
método o la propiedad que originó un error. Por ejemplo, el código siguiente ordena el
rango:
Los controles creados en un libro de Microsoft Excel que esté incrustado en un documento de otra
aplicación no funcionarán si el usuario hace doble clic en el libro para modificarlo. Los controles
funcionarán, sin embargo, si el usuario hace clic con el botón secundario y selecciona el comando Abrir
desde el menú contextual.
Si se guarda un libro de Microsoft Excel usando el formato de archivo de libro Microsoft Excel 5.0/95, se
perderá la información sobre el control ActiveX.
La palabra clave Me de un procedimiento de evento de un control ActiveX de una hoja hace referencia a la
hoja, no al control.
Worksheets(1).OLEObjects.Add "Forms.CommandButton.1", _
Left:=10, Top:=10, Height:=20, Width:=100
Con mucha frecuencia, el código de Visual Basic hará referencia a los controles ActiveX por sus
nombres. El ejemplo siguiente cambia el título del control denominado "CommandButton1."
Sheet1.CommandButton1.Caption = "Run"
Tenga en cuenta que, al utilizar un nombre de control externo fuera del módulo de clase de la hoja que contiene el
control, debe asignar el nombre de la hoja al nombre del control.
Para cambiar el nombre del control utilizado en código de Visual Basic, seleccione el control y configure la propiedad
(Name) en la ventana Propiedades.
Pág.| 93 Como los controles ActiveX también se representan mediante objetos OLEObject de la colección OLEObjects,
puede configurar propiedades de control si utiliza los objetos de la colección. El ejemplo siguiente
establece la posición izquierda del control "CommandButton1".
Worksheets(1).OLEObjects("CommandButton1").Left = 10
Las propiedades del control que no se muestran como propiedades del objeto OLEObject pueden establecerse si se
devuelve el objeto de control real mediante la propiedad Object. El ejemplo siguiente establece el título de
CommandButton1.
Worksheets(1).OLEObjects("CommandButton1"). _
Object.Caption = "run me"
Como todos los objetos OLE también forman parte de la colección Shapes, puede utilizar
esta colección para
establecer las propiedades de varios controles. El ejemplo siguiente alinea el borde izquierdo de
todos los controles de la hoja de cálculo 1.
El nombre de código de un control se utiliza en los nombres de sus procedimientos de eventos. No obstante, al
devolver un control desde la colección Shapes o OLEObjects de una hoja, debe utilizar el nombre de la forma, no
el de código para hacer referencia al control por su nombre. Por ejemplo, suponga que agrega una casilla de
verificación a una hoja y que tanto el nombre predeterminado de la forma como el de código son CheckBox1. Si, a
continuación, cambia el nombre en código de control escribiendo chkFinished junto a (Nombre) en la ventana
Propiedades, deberá usar chkFinished en los nombres de procedimientos de eventos, pero tendrá que seguir usando
Pág.| 94 CheckBox1 para devolver el control de las colecciones Shapes o OLEObject, como se muestra en el ejemplo
siguiente.
Puede utilizar la propiedad Areas para hacer referencia al rango o conjunto de rangos seleccionados en
una selección de varias áreas. El siguiente procedimiento cuenta las áreas de la selección. Si existe
más de un área, se muestra un mensaje de advertencia.
Sub FindMultiple()
If Selection.Areas.Count > 1 Then
MsgBox "Cannot do this to a multiple selection."
End If
End Sub
La lista siguiente contiene todas las funciones de hoja de cálculo que se pueden iniciar mediante el objeto
WorkSheetFunction. Para obtener más información acerca de una función concreta, vea el tema Referencia de
funciones en Microsoft Office Online.
Int.Acum
Int.Acum.V
Acos
Pág.| 95
Acosh
Amortiz.Progre
Amortiz.Lin
Aplicacion
Asc
Aseno
Asenoh
Atan2
Atanh
DesvProm
Promedio
Promedio.Si
Promedio.Si.Conjunto
Textobaht
Bessell
BesselJ
BesselK
BesselY
Distr.Beta
Distr.Beta.Inv
Bin.A.Dec
Bin.A.Hex
Bin.A.Oct
Distr.Binom
Multiplo.Superior
Distr.Chi
Prueba.Chi.Inv
Prueba.Chi
Elegir
Limpiar
Combinat
Complejo
Intervalo.Confianza
Pág.| 96
Convertir
Coef.De.Correl
Cosh
Contar
ContarA
Contar.Blanco
Contar.Si
Contar.Si.Conjunto
Cupon.Dias.L1
Cupon.Dias
Cupon.Dias.L2
Cupon.Fecha.L2
Cupon.Num
Cupon.Fecha.L1
Covar
Creador
Binom.Crit
Pago.Int.Entre
Pago.Princ.Entre
BDPromedio
Dias360
DB
Dbcs
BDContar
BDContarA
DDB
Dec.A.Bin
Dec.A.Hex
Dec.A.Oct
Grados
Delta
Desvia2
BDExtraer
Tasa.Desc
Pág.| 97
BDMax
BDMin
Moneda
Moneda.Dec
Moneda.Frac
BDProducto
BDDesvEst
BDDesvEstP
BDSuma
Duracion
BDVar
BDVarP
Fecha.Mes
Int.Efectivo
Fin.Mes
Fun.Error
Fun.Error.Compl
Redondea.Par
Distr.Exp
Fact
Fact.Doble
Distr.F
Encontrar
EncontrarB
Distr.F.Inv
Fisher
Prueba.Fisher.Inv
Decimal
Multiplo.Inferior
Pronostico
Frecuencia
Prueba.F
VF
Vf.Plan
Pág.| 98
Distr.Gamma
Distr.Gamma.Inv
Gamma.Ln
M.C.D
Media.Geom
GeStep
Crecimiento
Media.Armo
Hex.A.Bin
Hex.A.Dec
Hex.A.Oct
BuscarH
Distr.Hipergeom
Si.Error
Im.Abs
Imaginario
Im.Angulo
Im.Conjugada
Im.Cos
Im.Div
Im.Exp
Im.Ln
Im.Log10
Im.Log2
Im.Pot
Im.Product
Im.Real
Im.Seno
Im.Raiz2
Im.Sustr
Im.Sum
Indice
Interseccion.Eje
Tasa.Int
Pág.| 99
PagoInt
Tir
EsErr
EsError
Es.Par
EsLogico
EsNod
EsNoTexto
EsNumero
Es.Impar
Int.Pago.Dir
EsTexto
Curtosis
K.Esimo.Mayor
M.C.M
Estimacion.Lineal
Ln
Log
Log10
Estimacion.Logaritmica
Distr.Log.Inv
Distr.Log.Norm
Buscar
Coincidir
Max
MDeterm
Duracion.Modif
Mediana
Min
MInversa
TirM
MMult
Moda
Redond.Mult
Pág.| 100
Multinomial
NegBinomDist
Dias.Lab
Tasa.Nominal
Distr.Norm
Distr.Norm.Inv
Distr.Norm.Estand
Distr.Norm.Estand.Inv
NPer
VNA
Oct.A.Bin
Oct.A.Dec
Oct.A.Hex
Redondea.Impar
Precio.Per.Irregular.1
Rendto.Per.Irregular.1
Precio.Per.Irregular.2
Rendto.Per.Irregular.2
Principal
Pearson
Percentil
Rango.Percentil
Permutaciones
Fonetico
Pi
Pago
Poisson
Potencia
PagoPrin
Precio
Precio.Descuento
Precio.Vencimiento
Probabilidad
Pág.| 101
Producto
NomPropio
VA
Cuartil
Cociente
Radianes
Aleatorio.Entre
Jerarquia
Tasa
Cantidad.Recibida
Reemplazar
ReemplazarB
Repetir
Numero.Romano
Redondear
Redondear.Menos
Redondear.Mas
Coeficiente.R2
Rdtr
Hallar
HallarB
Suma.Series
SenoH
Coeficiente.Asimetria
SLn
Pendiente
K.Esimo.Menor
Raiz2Pi
Normalizacion
DesvEst
DesvEstP
Error.Tipico.XY
Sustituir
Subtotales
Pág.| 102
Suma
Sumar.Si
Sumar.Si.Conjunto
SumaProducto
Suma.Cuadrados
SumaX2MenosY2
SumaX2MasY2
SumaXMenosY2
Syd
TanH
Letra.De.Test.Eqv.A.Bono
Letra.De.Tes.Precio
Letra.De.Tes.Rendto
Distr.T
Texto
Distr.T.Inv
Transponer
Tendencia
Espacios
Media.Acotada
Prueba.T
USDollar
Var
VarP
Dvs
BuscarV
DiaSem
Num.De.Semana
Dist.Weibull
Dia.Lab
Tir.No.Per
Vna.No.Per
Frac.Año
Rendto.Desc
Pág.| 103
Rendto.Vencto
Prueba.Z