Ingresando al mundo Visual Basic ....................................................................................................................5 Lo que se puede hacer con VBA ...................................................................................................................5 Primer paso en Excel 2010 - Ver la barra del programador ............................................................6 Entender de Seguridad de macros .........................................................................................................6 Usando nuevos tipos de archivos en Excel 2010 ...............................................................................6 Novedades en Excel 2010 ....................................................................................................................................8 Nuevas capacidades para desarrolladores de Excel ..............................................................................8 Excel de 64 bits....................................................................................................................................................8 Estilos de Programar .........................................................................................................................................8 Sobre Comentarios ............................................................................................................................................9 Sobre Legibilidad ...............................................................................................................................................9 Sobre Modularidad ............................................................................................................................................9 Proyectos y su contenido ................................................................................................................................. 10 Revista General ................................................................................................................................................ 10 Objetos ........................................................................................................................................................... 10 Propiedades y metodos ........................................................................................................................... 10 Colecciones .................................................................................................................................................. 10 El objeto Libro Excel .................................................................................................................................. 10 Objeto Hojas Excel ..................................................................................................................................... 10 Modulos Estandar ...................................................................................................................................... 11 Modulos Clases ........................................................................................................................................... 11 Objetos Formularios .................................................................................................................................. 11 Las propiedades de la Ventana como objeto................................................................................... 11 Ambiente de Trabajo con VBA ................................................................................................................... 11 La ventana de Codigo ............................................................................................................................... 11 Objetos y procedimientos Lista de Cajas........................................................................................... 11 Entendiendo los componentes de VBE ................................................................................................... 12 Barra de herramientas .............................................................................................................................. 12 Ventana de Proyecto ventana ............................................................................................................... 13 Ventana de Codigo .................................................................................................................................... 13 Ventana Inmediata .................................................................................................................................... 13
Trabajando con Proyectos en VBE ....................................................................................................... 13 Agregando - Borrando - Importando y Exportando modulos ................................................... 14 Creando un Modulo .................................................................................................................................. 14 Formas en que puede ingresar Codigo .............................................................................................. 14 Variables, Tipos de datos y constantes ........................................................................................................ 15 Constantes ......................................................................................................................................................... 15 Enumeradores .................................................................................................................................................. 15 Variables y Tipos de Datos ........................................................................................................................... 16 Alcance de las variables ................................................................................................................................ 18 Variables Nivel de procedimiento Local) ........................................................................................... 18 Variables de Nivel Modulo ...................................................................................................................... 18 Instruccion Option Explicit...................................................................................................................... 19 Ciclo de vida de las variables.................................................................................................................. 19 Variables Static) ........................................................................................................................................... 20 Funciones y Subrutinas..................................................................................................................................... 21 Llamando a funciones ................................................................................................................................... 21 Llamando a Subrutinas ................................................................................................................................. 21 Parametros y Argumentos ........................................................................................................................... 22 Parametros ByRef versus ByVal ............................................................................................................. 22 Saliendo de un procedimiento .............................................................................................................. 23 Public y Private Procedimientos ........................................................................................................... 23 Declaraciones, Operadores y Funciones Integradas ............................................................................... 24 Declaraciones ................................................................................................................................................... 24 Operadores VBA de Excel ............................................................................................................................. 24 Operadores matematicos ........................................................................................................................ 24 Operadores de la cadena......................................................................................................................... 25 Operadores de comparacion VBA ........................................................................................................ 25 Operadores logicos de VBA .................................................................................................................... 26 Funciones integradas................................................................................................................................ 26 La Funcion MsgBox.................................................................................................................................... 29 La Funcion InputBox ................................................................................................................................. 32 Declaraciones de Control ............................................................................................................................. 33 La Declaracion If..Then ............................................................................................................................. 33 La Declaracion de Bucle FOR .................................................................................................................. 33
~5~
1. Botn derecho sobre la cinta de Excel y elija personalizar la cinta de opciones 2. Sobre la columna de la derecha busque programadory tldelo
~6~
Excel 2010 ofrece soporte para cuatro tipos de archivos. Las Macros no estn autorizadas a ser almacenados en el tipo de archivo predeterminado. Usted tiene que usar la opcin Guardar como escenario de todos los libros de macro, o se puede cambiar el tipo de archivo predeterminado que utiliza Excel 2010. Los tipos de archivos disponibles son los siguientes: Libro de Excel (. Xlsx)-Los archivos se almacenan como una serie de objetos XML y luego comprimen en un nico archivo. Este nuevo paradigma de almacenamiento de archivos en Excel 2010 permite tamaos de archivo mucho ms pequeos. Tambin permite que otras aplicaciones (incluso el Bloc de notas!) Para editar o crear libros de Excel. Por desgracia, las macros no se pueden almacenar en archivos con una extensin. Xlsx. Excel Macro-Enabled Workbook (. Xlsm)-Esto es similar a los valores predeterminados. Xlsx, excepto que las macros estn permitidas. El concepto bsico es que si alguien tiene un archivo .Xlsx, l o ella no tendr que preocuparse acerca de las macros maliciosas. Sin embargo, si ven un archivo. Xlsm, deberan estar preocupados de que podra haber macros adjuntas. Libro de Excel binario (. Xlsb)-Este es un formato binario diseado para manejar valores mayores a 1,1 millones de filas de la cuadrcula de tamao en Excel 2010. Versiones anteriores de Excel almacena su archivos en un formato binario de propietario. Si bien los formatos binarios se cargan ms rpido, son ms propensos a la corrupcin, y unos pocos bits perdidos pueden destruir todo el archivo. Las macros estn permitidas en este formato. Libro de Excel 97-2003 (. Xls)-Este formato produce archivos que pueden ser ledos por cualquier persona que utilice versiones anteriores de Excel. Las macros se admiten como adjuntos en este formato binario, sin embargo, cuando se guarda en este formato, se pierde el acceso a las celdas fuera de A1: IV65536. Adems, si alguien abre el archivo en Excel 2003, l o ella perder el acceso a cualquier cosa que las caractersticas utilizadas introducidas en Excel 2007 o posterior.
~7~
Estilos de Programar
El caso del estilo de buena programacin constituye en este curso, subjetivo; tiene que ver con el hecho de tener un buen estilo de escritura. Probablemente el mejor camino para aprender a tener un buen estilo de programacin, es ver de frente mientras programamos. Realizamos en este caso los siguientes comentarios: Cuando en duda, favorece la legibilidad sobre la astucia o la elegancia Llene sus programas con muchos comentarios
~8~
Sobre Comentarios
El problema es este: Buenos programas son generalmente usados durante mucho tiempo y razonablemente por meses o aos. Inevitablemente, el programador querr retornar al cdigo para realizar cambios (tal vez agregando algun captulo) o corregir algn error. Y aqu es donde el programador puede perderse el cdigo escrito hace bastante tiempo. Entonces, los comentarios deben indicar al programador que realiza esa parte del cdigo y cules son los seteos o valores predeterminados que deberan tener las variables y constantes. El valor por defecto de x debe ser 5 x=5
Sobre Legibilidad
Legibilidad es un patrn subjetivo. Puede ser legible por una persona pero no por otra. La idea de legibilidad es permitir el seguimiento del cdigo sin grandes inconvenientes en todo el ciclo de ejecucin. Una de las sentencias que al ser utilizadas de manera continua el GOTO hace que un cdigo legible se rompa estructuralmente, pero suele ser til para salir de sentencias infinitas. GOTO lo que hace es redirigir porciones de cdigo en base a clusulas con etiquetas. Demasiadas instrucciones GoTo pueden ser difciles de leer y de depurar. Siempre que sea posible, utilice instrucciones de control estructuradas (Do...Loop, For...Next, If...Then...Else, Select Case). Las etiquetas se diferencian del resto por contener el ttulo y dos puntos ej. TryAgain:
Sobre Modularidad
Uno de los medios que mejor legibilidad propone es la programacin modular. Lo que genera la programacin modular es permitir agrupar lneas de cdigo en base a las acciones que genera.
~9~
Proyectos y su contenido
Revista General
Objetos
Los objetos de programacin se relacionan entre s sistemticamente en una jerarqua denominada modelo de objetos de la aplicacin. El modelo de objetos bsicamente refleja lo que se ve en la interfaz de usuario. Por ejemplo, el modelo de objetos de Excel contiene los objetos Application, Workbook, Sheet y Chart, entre muchos otros. El modelo de objetos constituye el mapa conceptual de la aplicacin y sus funcionalidades.
Propiedades y metodos
Es posible manipular objetos al establecer sus Propiedades y llamar a sus mtodos. Si se establece una propiedad, se producen algunos cambios en la calidad del objeto. Si se llama a un mtodo, se logra que el objeto realice una determinada accin. Por ejemplo, el objeto Workbook tiene un mtodo Close que cierra el libro y una propiedad ActiveSheet que representa la hoja activa del libro.
Colecciones
Varios objetos vienen en las versiones singular y plural; por ejemplo, libro y libros, hoja de clculo y hojas de clculo. Las versiones en plural se denominan colecciones. Los objetos de una coleccin se usan para realizar una accin en varios elementos de esa
coleccin.
Los niveles del proyecto tienen los siguientes nombres de nodo: Objetos Microsoft Excel Formularios Mdulos Clases
~ 10 ~
Una hoja Excel es un espacio de trabajo o un hoja de grfico. Cada hoja representa un componente visible y que contiene una librera de cdigo de eventos. Nosotros podemos realizar acciones de manera independiente en cada librera, pero existen reglas para utilizarlos en mdulos estndar.
Modulos Estandar
Los mdulos son procedimientos (funciones y subrutinas). Estos procedimientos pueden ser macros diseados para correr por el usuario, o puede ser programas que soporten a otros programas.
Modulos Clases
Los mdulos clases son cdigos relacionados a objetos clientes. Como ver , se pueden construir muchos objetos como objetos libros, objetos de hojas, objetos grficos, objetos fuentes, y todos disponibles.
Objetos Formularios
Excel contiene una gran cantidad de excelentes cajas de dilogo. Adems con posibilidad de crear cajas de dilogos propios, llamados Formularios o Formularios de usuario. En adicin a estos formularios y controles, el objeto puede contener cdigo escrito para soportar a estos objetos.
~ 11 ~
Donde: Caja a la izquierda vemos (Workbook), permite moverse por cada objeto y sus eventos. Caja desplegable a la derecha (Open), permite navegar sobre los eventos que puede ser utilizado.
Barra de herramientas
La barra de herramientas estndar, que est justo debajo de la barra de men por defecto (consulte a la Figura 3-1), es uno de los cuatro VBE barras de herramientas disponibles. Se puede personalizar las barras de herramientas, moverlos, mostrar las barras de herramientas, etc. Si eres de los que buscan cambiar, utilice el comando Ver
~ 12 ~
Barras de herramientas Vista para trabajar con VBE barras de herramientas. Muchas personas (incluido yo) simplemente los dejo como estn.
Ventana de Codigo
Una ventana de cdigo contiene el cdigo de VBA. Cada objeto en un proyecto tiene asociado una ventana Cdigo. Para ver la ventana de un objeto Cdigo, haga doble clic en el objeto en la ventana del proyecto. Por ejemplo, para ver la ventana de cdigo para la Hoja1 objeto, haga doble clic en Sheet1 hoja 1 en la ventana del proyecto. A menos que haya aadido algo de VBA cdigo, la ventana de cdigo estar vaca. Puede encontrar ms informacin sobre el cdigo de Windows despus de "Utilizacin de este captulo con una ventana de cdigo ".
Ventana Inmediata
La ventana Inmediato puede o no ser visible. Si no es visible, pulse Ctrl + G o use el comando Ventana Inmediato. Para cerrar la Ventana Inmediato, haga clic en el botn Cerrar en la barra de ttulo (o haga clic en cualquier lugar en la ventana Inmediato y seleccione Ocultar en el men contextual). La ventana Inmediato es el ms til para ejecutar sentencias de VBA directamente y para depurar el cdigo. Si ests empezando con VBA, esta ventana no ser tan til, as que sintase libre para ocultarlo y liberar algo de pantalla de espacio para otras cosas.
~ 13 ~
Creando un Modulo
En general, un mdulo de VBA puede contener tres tipos de cdigo: Declaraciones: Una o varias declaraciones de informacin que usted suministre a VBA. Por ejemplo, se puede declarar el tipo de datos para las variables que planea utilizar o configurar algunas otras opciones de mdulo ancho. Sub Procedimientos: Un conjunto de instrucciones de programacin que realiza alguna accin. Los procedimientos Function: Un conjunto de instrucciones de programacin que devuelve un solo valor (similar en concepto a una funcin de hoja de clculo, tales como SUM).
~ 14 ~
Una constante simblica es un nombre de un literal. Para definir o declarar una constante literal en un programa, nosotros usamos la letra Const, como lo siguiente
Const invoicepath = d:\oldinvoice\
Enumeradores
Los enumeradores son valores de tipos constantes simblicas Los elementos del tipo de Enum se inicializan a los valores de constantes dentro de la instruccin Enum. Los valores asignados no se pueden modificar en tiempo de ejecucin y pueden incluir valores positivos y negativos Una instruccin Enum slo puede aparecer en el nivel de mdulo. Una vez definido el tipo de Enum, puede utilizarse para declarar variables, parmetros o procedimientos que devuelvan su tipo. No puede cualificar el nombre de un tipo Enum con un nombre de mdulo. Los tipos Public Enum de un mdulo de clase no son miembros de la clase; sin embargo, se escriben en la biblioteca de tipos. Los tipos Enum definidos en mdulos estndar no se escriben en bibliotecas de tipos. Los tipos Public Enum del mismo nombre no se pueden definir en mdulos estndar y en mdulos de clase, ya que comparten el mismo espacio de nombres. Cuando dos tipos Enum de distintas bibliotecas de tipos tienen el mismo nombre pero distintos elementos, una referencia a una variable del tipo depende de la biblioteca de tipos que tenga mayor prioridad en References. No puede utilizar un tipo Enum como destino en un bloque With. Ejemplo
Enum VbMsgBoxStyle vbOKOnly = 0 vbOKCancel = 1 vbAbortRetryIgnore = 2 vbYesNoCancel = 3
~ 15 ~
vbYesNo = 4 vbRetryCancel = 5 End Enum Sub prueba() If MsgBox("proceder?", vbOKCancel) = vbOK Then 'agregar el codigo que corresponda con ok Else 'agregar el codigo con el otro boton End If End Sub
Tipo de datos Byte Boolean Integer Long (entero largo) LongLong (entero LongLong) LongPtr (Entero largo en sistemas de 32 bits, entero LongLong en sistemas de 64 bits) Single (coma flotante/ precisin simple) Double (coma flotante/ precisin doble) Currency (entero a escala) Decimal
Intervalo 0 a 255 True o False -32,768 a 32,767 -2,147,483,648 a 2,147,483,647 -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (slo es vlido en plataformas de 64 bits). -2.147.483.648 a 2.147.483.647 en sistemas de 32 bits, -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 en sistemas de 64 bits
4 bytes
-3,402823E38 a 1,401298E-45 para valores negativos; 1,401298E-45 a 3,402823E38 para valores positivos -1.79769313486231E308 a -4,94065645841247E-324 para valores negativos; 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos -922.337.203.685.477,5808 a 922.337.203.685.477,5807 +/-79.228.162.514.264.337.593.543.950.335 sin punto decimal;
8 bytes
8 bytes 14 bytes
~ 16 ~
+/-7,9228162514264337593543950335 con 28 posiciones a la derecha del signo decimal; el nmero ms pequeo distinto de cero es +/-0,0000000000000000000000000001 Date Object String (longitud variable) String (longitud fija) Variant (con nmeros) Variant (con caracteres) Definido por el usuario (utilizando Type) 8 bytes 4 bytes 10 bytes + longitud de la cadena Longitud de la cadena 16 bytes 22 bytes + longitud de la cadena Nmero requerido por los elementos 1 de enero de 100 a 31 de diciembre de 9999 Cualquier referencia a tipo Object Desde 0 a 2.000 millones Desde 1 a 65.400 aproximadamente Cualquier valor numrico hasta el intervalo de un tipo Double El mismo intervalo que para un tipo String de longitud variable El intervalo de cada elemento es el mismo que el intervalo de su tipo de datos.
Declaracion de Variables
Es importante entender que tener una buena estructura de programacin requiere la declaracin de variables. VBA soporta no declarar variables Variant es el tipo de datos para todas las variables si no se declaran explcitamente como de algn otro tipo (utilizando instrucciones como Dim, Private, Public o Static). El tipo de datos Variant no tiene un carcter de declaracin de tipo. Variant es un tipo de datos especial que puede contener cualquier clase de datos excepto datos de cadena de longitud fija (los tipos Variant admiten ahora tipos definidos por el usuario.) Variant tambin puede contener los valores especiales Empty, Error, Nothing y Null. Puede determinar la forma en que desea tratar los datos tipo Variant utilizando las funciones VarType o TypeName.
Sufijos y Prefijos
Array o Matrices
Un array es una variable pero se distingue por el ndice que lleva de cada valor.
Dim cell(1 to 100) As Range
~ 17 ~
Matrices Dinamicas
Cuando una matriz es definida del siguiente modo:
Dim FileName(1 to 10) As String
El tamao de la matriz esta fijado. Pero es posible que podamos dinamizar el tamao. Visual lo permite a travs de la declaracin ReDim
Dim FileName() as String Redim FileName(1 to 10) Redim FileName (1 to 100)
La funcion Ubound
Esta funcin es utilizada para comparar y permitir redimensionar una matriz si es necesario. La funcin UBound se utiliza junto con la funcin LBound para determinar el tamao de una matriz. Use la funcin LBound para encontrar el lmite inferior de la dimensin de una matriz. UBound devuelve los valores enumerados en la tabla siguiente para una matriz con las dimensiones siguientes:
Dim A(1 To 100, 0 To 3, -3 To 4)
Instruccin UBound(A, 1) UBound(A, 2) UBound(A, 3) Valor devuelto 100 3 4
~ 18 ~
Variables tipo Public (o constantes) estn disponibles en todo el procedimiento y todos los mdulos del proyecto. Mientras que las declaraciones tipo Private estn disponibles nicamente sobre el procedimiento en el mdulo que ha sido declarada.
Comentarios Si se usa, la instruccin Option Explicit debe aparecer en un mdulo antes de cualquier procedimiento. Cuando Option Explicit aparece en un mdulo, debe declarar explcitamente todas las variables mediante las instrucciones Dim, Private, Public, ReDim o Static. Si intenta usar un nombre de variable no declarado, ocurrir un error en tiempo de compilacin. Si no usa la instruccin Option Explicit todas las variables no declaradas son Variant, a menos que el tipo predeterminado est especificado de otra manera con una instruccin Def tipo.
En este ejemplo estamos diciendo que la variable LocalVar no podr ser vista por procedureB, porque su alcance est fuera de vista. El ciclo de vida de esta variable continuar una vez que termine el procedureB y tomar otro valor LocalVar ser 1. Todo termina cuando se cumple el procedureA()
~ 19 ~
Variables Static)
Una variable esttica es una variable local que retiene su valor mientras no se cierre el documento o template que contiene el mdulo de cdigo. No siempre es utilizada las variables estticas, pero pueden ser tiles en muchas oportunidades donde requiere ciertos controles.
~ 20 ~
Funciones y Subrutinas
VBA tiene dos tipos de procedimientos: Funciones y subrutinas. Y recuerde, la diferencia entre funciones y subrutinas es que las funciones retornan un valor y las subrutinas no.
Llamando a funciones
La declaracin de una funcin tiene la siguiente forma
[Public or Private] Function NombreFuncion(Param1 As DataType1,_ Param2 As DataType2,) As ReturnType
Note que no solamente es posible declarar el tipo de dato en la funcin sino tambin el valor retornado. Es opcional las palabras Public y Private pero probablemente querr Ud. indicar el alcance de la funcin, tal como en las declaraciones de variable visto anteriormente. Ejemplo de una funcin
Public Function AddOne (Value As Integer) AddOne = Value + 1 End Function As Integer
Llamando a Subrutinas
La declaracin de un subrutina tiene la siguiente forma:
[Public or Private] Sub NombreSubrutina(Param1 As DataType1,_ Param2 As DataType2,)
~ 21 ~
Las subrutinas no retornan valor, y no pueden ser usados en expresiones. Para llamar a una subrutina por su nombre, nosotros escribimos de la siguiente manera:
Call SubroutineA(parameters,)
O simplemente
SubroutineA parameters
Parametros y Argumentos
Considerando la siguiente subrutina sumamente sencilla, para desplegar el nombre de una persona>
Sub DisplayName(sName As String) MsgBox My Name is & sName End Sub
Call DisplayName(Wolfgang)
La variable sName en la declaracin de un procedimiento se llama parmetros. El valor usado para un parmetro al ser llamado el procedimiento se denomina argumento. En nuestro ejemplo Wolfgang
~ 22 ~
End Sub
Note la precencia de la palabra ByRef en la declaracin del procedimiento AddOne. Esta palabra dice a VBA pasar como referencia a la variable x al procedimiento AddOne. Luego, el procedimiento AddOne, en efecto, reemplaza este parmetro i por la variable x. Como resultado la variable x cambio su valor a las modificaciones realizadas en procedimiento AddOne. Ahora por el otro lado, suponga que cambiamos el procedimiento AddOne, reemplazando la palabra ByRef por la palabra ByVal:
Sub AddOne (ByVal i As Integer) i = i + 1 End Sub
En este caso, VBA no pasa una referencia a la variable x, sino que pasa a su valor. Por lo tanto, la variable i en AddOne simplemente toma el valor 5. De este modo la variable x mantiene su valor original sin ser afectado.
Saliendo de un procedimiento
VBA provee de las siguientes declaraciones: Exit Sub y Exit Function para salir de un procedimiento que no puede terminar de manera natural.
Sub DisplayName(sName As String) If sName = then Msgbox Por favor ingrese un nombre Exit sub End If MsgBox El nombre ingresado es: & sName End Sub
~ 23 ~
Imports Statement (XML Namespace) Module Option Compare Property RaiseEvent Resume Stop Throw With...End With
Operadores matematicos
Los principales operadores matemticos VBA se enumeran en la tabla a continuacin. Tenga en cuenta que, las precedencias que aparecen junto a los operadores son los valores por defecto, que se aplican en ausencia de los soportes. Sin embargo, el orden en que se aplican los operadores VBA puede controlarse mediante la adicin de los soportes a una expresin:
~ 24 ~
Operador
Accin
^ * / \
El operador de la energa El operador de multiplicacin El operador de divisin El operador de divisin entera este operador se divide dos nmeros y devuelve el resultado entero (ej. 7\4 da un resultado de 1) El operador de mdulo - este operador se divide dos nmeros y devuelve el resto (ej. 8 Mod 3 ofrece un resultado de 2) El operador de suma El operador de resta
Mod
+ -
5 5
Operadores de la cadena
El operador de la cadena principal en VBA de Excel es el operador de concatenacin, &:
Operador Accin
&
~ 25 ~
Igual a No es igual Menos de Mayor que Inferior o igual a Mayor que o igual a
Operador lgico y (ej. la expresin 'A y B' devuelve True si ambos A y B son verdadera y devuelve False en caso contrario)
Operador lgico o (ej. la expresin 'A o B' devuelve True si ya sea A o B es verdadero y devuelve False en caso contrario)
No
Niega una evaluacin (ej. la expresin ' no A' devuelve True si A es falsa y devuelve False si A es verdadero)
Funciones integradas
VBA tiene tambin un gran nmero de funciones que estn disponibles para utilizarse en el cdigo VBA. Continuacin se enumeran algunas de las funciones ms utilizadas de VBA.
Funcin Accin
ABS
Si se suministra con un valor numrico, la funcin Abs devuelve el valor numrico absoluto, con un signo positivo por ejemplo. ABS(-20) devuelve el valor 20 ABS(20) devuelve el valor 20
~ 26 ~
Chr
Si se suministra con un valor numrico, la funcin Chr devuelve el carcter ansi asociada a ese valor por ejemplo. Chr(10) devuelve un salto de lnea Chr(97) devuelve el carcter "un"
Date DateAdd
Devuelve la fecha actual del sistema Aade un periodo de tiempo determinado a una fecha. La funcin tiene el formato DateAdd (intervalo, nmero, fecha), donde el argumento intervalo especifica el tipo de intervalo de tiempo que se aade a la fecha proporcionada. Esto puede adoptar uno de los siguientes valores: Intervalo Representa aaaa q m y d w WW h n s ao cuarto mes das del ao da lunes a viernes semana hora minutos segundo
por ejemplo.
DateAdd ("d", 32, "01/01/2009") agrega 32 das a la fecha "01/01/2009" y as devuelve la fecha "02/02/2009" DateAdd ("ww", 8, "01/01/2009") 88 semanas se suma a la fecha "01/01/2009" y as devuelve la fecha "09/09/2010"
DateDiff
Calcula el nmero de intervalos especificados entre ahora y una fecha suministrada por ejemplo. DateDiff ("d", "01/01/2009", "02/02/2009") calcula el nmero de das entre las fechas "01/01/2009" y "02/02/2009" y por lo tanto devuelve el valor 32 DateDiff ("d", "01/01/2009", "09/09/2010") calcula el nmero de semanas entre las fechas "01/01/2009" y "09/09/2010" y por lo tanto devuelve el valor 88
~ 27 ~
Daty
Devuelve el da del mes para una fecha suministrada por ejemplo. Day("01/29/2009") devuelve el valor 29
Hour
Devuelve la parte de hora de un tiempo suministrado por ejemplo. Hour("22:45:00") devuelve el valor 22
InStr
Si se suministra con un nmero entero n y dos cadenas, la funcin InStr devuelve la posicin de la segunda cadena en la primera cadena, desde la bsqueda de la posicin de n'th en la primera cadena por ejemplo. InStr (1, "Aqu est el searchword", "searchword") devuelve el valor de 13 InStr (14, "aqu el searchword pero aqu hay otro searchword", "searchword") devuelve el valor 44
Int
Si se suministra con un valor numrico, la funcin Int devuelve la parte entera del valor por ejemplo. Int(5.79) devuelve el valor 5
ISDATE
Si se suministra con un valor, la funcin IsDate devuelve True si el valor es una fecha y False en caso contrario por ejemplo. IsDate("01/01/2009") devuelve el valor True IsDate(100) devuelve el valor False
ESERROR
Si se suministra con un valor, la funcin EsError devuelve True si el valor es un error, de lo contrario, es errneo Si se suministra con el nombre de un argumento opcional para una funcin, la funcin IsMissing devuelve True si no se ha pasado ningn valor de argumento a la funcin Si se suministra con un valor, la funcin IsNumeric devuelve True si el valor puede ser evaluado como un nmero Devuelve un nmero especificado de caracteres desde el principio de una cadena suministrada El formato de la funcin queda (cadena, longitud), donde cadena es la cadena de texto original y la longitud es el nmero de caracteres a devolverse desde el inicio de la cadena suministrada por ejemplo. Izquierda ("abcdefghijklm", 4) devuelve la cadena "abcd" Izquierda ("abcdefghijklm", 1) devuelve la cadena "un"
IsMissing
IsNumeric
Left
Len
Si viene con una cadena de texto, la funcin Len devuelve la longitud de la cadena por ejemplo. Len("ABCDEFG") devuelve el valor 7
~ 28 ~
Month
Devuelve el nmero de mes de una fecha suministrada por ejemplo. Month("01/29/2009") devuelve el valor 1
MID
Devuelve un nmero especificado de caracteres desde el centro de una cadena suministrada El formato de la funcin es Mid (cadena, Inicio, longitud), donde cadena es la cadena de texto original, Inicio es la posicin inicial de la seccin de cuerda que va a ser devuelto y longitud es la longitud de la cadena devuelta por ejemplo. MID ("abcdefghijklm", 4, 5) devuelve la cadena "defgh" MID ("abcdefghijklm", 10, 2) devuelve la cadena "jk"
Minute
Devuelve la parte minuto de uno suministrado por ejemplo. Minute("22:45:15") devuelve el valor 45
Now Right
Devuelve la fecha actual del sistema y el tiempo Devuelve un nmero especificado de caracteres desde el final de una cadena suministrado El formato de la funcin es Right (cadena, longitud), donde cadena es la cadena de texto original y la longitud es el nmero de caracteres a devolverse desde el extremo de la cadena suministrada por ejemplo. Derecho ("abcdefghijklm", 4) devuelve la cadena "jklm" Derecho ("abcdefghijklm", 1) devuelve la cadena "m"
Second
Devuelve la segunda parte de un tiempo suministrado por ejemplo. Second("22:45:15") devuelve el valor 15
Sqr
Si se suministra con valor numrico, la funcin Sqr devuelve la raz cuadrada de ese valor por ejemplo. Sqr(4) devuelve el valor 2 Sqr(16) devuelve el valor 4
Time UBound
Devuelve la hora actual del sistema Si se suministra con una matriz, la funcin UBound devuelve el subndice superior de la matriz Devuelve el ao de una fecha suministrada por ejemplo. Year("01/29/2009") devuelve el valor de 2009
Year
La Funcion MsgBox
~ 29 ~
La funcin MsgBox es utilizado para desplegar mensajes y espera a que el usuario responda pulsando un butn. La sintaxis comnmente utilizada. Sintaxis MsgBox(prompt[, buttons][, title][, helpfile, context]) La sintaxis de la funcin MsgBox consta de estos argumentos con nombre:
Parte Descripcin Requerido. Expresin de cadena que representa el prompt en el cuadro de dilogo. La longitud mxima de prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Si prompt consta de ms de una lnea, puede separarlos utilizando un carcter de retorno de carro (Chr(13)) o un carcter de avance de lnea (Chr(10)), o una combinacin de caracteres de retorno de carro avance de lnea (Chr(13) y Chr(10)) entre cada lnea y la siguiente. Opcional. Expresin numrica que corresponde a la suma de los valores que especifican el nmero y el tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botn predeterminado y la modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0. Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite title, en la barra de ttulo se coloca el nombre de la aplicacin. Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utiliza para proporcionar ayuda interactiva en el cuadro de dilogo. Si se especifica helpfile, tambin se debe especificar context. Opcional. Expresin numrica que es igual al nmero de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, tambin se debe especificar helpfile .
prompt
buttons
title
helpfile
context
~ 30 ~
Muestra el icono de mensaje crtico. Muestra el icono de pregunta de advertencia. Muestra el icono de mensaje de advertencia. Muestra el icono de mensaje de informacin. El primer botn es el predeterminado. El segundo botn es el predeterminado. El tercer botn es el predeterminado. El cuarto botn es el predeterminado. Aplicacin modal; el usuario debe responder al cuadro de mensajes antes de poder seguir trabajando en la aplicacin actual. Sistema modal; se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensajes. Agrega el botn Ayuda al cuadro de mensaje. Especifica la ventana del cuadro de mensaje como la ventana de primer plano. El texto se alnea a la derecha. Especifica que el texto debe aparecer para ser ledo de derecha a izquierda en sistemas hebreo y rabe.
VbSystemModal
4096
VbMsgBoxHelpButton VbMsgBoxSetForeground
16384 65536
VbMsgBoxRight VbMsgBoxRtlReading
524288 1048576
El primer grupo de valores (0 a 5) describe el nmero y el tipo de los botones mostrados en el cuadro de dilogo; el segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512) determina el botn predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman nmeros para obtener el valor final del argumento buttons, se utiliza solamente un nmero de cada grupo. Nota Estas constantes las especifica Visual Basic for Applications. Por tanto, el nombre de las mismas puede utilizarse en cualquier lugar del cdigo en vez de sus valores reales. Valores devueltos
Constante vbOK vbCancel Valor 1 2 Descripcin Aceptar Cancelar
~ 31 ~
3 4 5 6 7
Comentarios Cuando se proporcionan tanto helpfile como context, el usuario puede presionar F1 (Windows) o Ayuda (Macintosh) para ver el tema de Ayuda correspondiente al context. Algunas aplicaciones host, por ejemplo Microsoft Excel, tambin agregan automticamente un botn Ayuda al cuadro de dilogo. Si el cuadro de dilogo cuenta con un botn Cancelar, presionar la tecla ESC tendr el mismo efecto que hacer clic en este botn. Si el cuadro de dilogo contiene un botn Ayuda, se suministra ayuda interactiva para ese cuadro de dilogo. Sin embargo, no se devuelve valor alguno hasta que se hace clic en uno de estos botones.
La Funcion InputBox
La funcin InputBox est diseada para tomar datos desde el usuario. La ms comnmente usada sintaxis es: Sintaxis InputBox (prompt[, title][, default][, xpos][, ypos][, helpfile, context]) La sintaxis de la funcin InputBox consta de estos argumentos con nombre:
Parte Descripcin Requerido. Expresin de cadena que se muestra como mensaje en el cuadro de dilogo. La longitud mxima de prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Si prompt consta de ms de una lnea, puede separarlos utilizando un carcter de retorno de carro (Chr(13)), un carcter de avance de lnea (Chr(10)) o una combinacin de los caracteres de retorno de carro-avance de lnea (Chr(13) y Chr(10)) entre cada lnea y la siguiente. Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si omite title, en la barra de ttulo se coloca el nombre de la aplicacin. Opcional. Expresin de cadena 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 vaco.
Prompt
Title
Default
~ 32 ~
Xpos
Opcional. Expresin numrica que especifica, en twips, la distancia en sentido horizontal entre el borde izquierdo del cuadro de dilogo y el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de dilogo se centra horizontalmente. Opcional. Expresin numrica que especifica, en twips, la distancia en sentido vertical entre el borde superior del cuadro de dilogo y el borde superior de la pantalla. Si se omite ypos, el cuadro de dilogo se coloca a aproximadamente un tercio de la altura de la pantalla, desde el borde superior de la misma. Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utilizar para proporcionar ayuda interactiva para el cuadro de dilogo. Si se especifica helpfile, tambin deber especificarse context. Opcional. Expresin numrica que es el nmero de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context , tambin deber especificarse helpfile.
Ypos
Helpfile
Context
Comentarios Cuando se especifica tanto helpfile como context, el usuario puede presionar F1 (Windows) o Ayuda (Macintosh) para ver el tema de Ayuda correspondiente a context. Algunas aplicaciones host, por ejemplo, Microsoft Excel, tambin agregar automticamente un botn Ayuda al cuadro de dilogo. Si el usuario hace clic en Aceptar o presiona Entrar , la funcin InputBox devuelve lo que haya en el cuadro de texto. Si el usuario hace clic en Cancelar, la funcin devuelve una cadena de caracteres de longitud cero (""). Nota Si desea especificar ms que el primer argumento con nombre, debe utilizar InputBox en una expresin. Si desea omitir algunos argumentos de posicin, debe incluir el delimitador de coma correspondiente.
Declaraciones de Control
La Declaracion If..Then
Sintaxis
If condicin Then [instrucciones]-[Else instrucciones_else]
Sintaxis
For contador = principio To fin [Step incremento] [instrucciones] [Exit For] [instrucciones] Next [contador]
Una vez que se inicia el bucle y se han ejecutado todas las instrucciones en el bucle, incremento se suma a contador. En este punto, las instrucciones del bucle se pueden ejecutar de nuevo (si se cumple la misma prueba que caus que el bucle se ejecutara inicialmente) o bien se sale del bucle y la ejecucin contina con la instruccin que sigue a la instruccin Next. Sugerencia Cambiar el valor de contador mientras est dentro de un bucle hace difcil su lectura y depuracin. Se pueden colocar en el bucle cualquier nmero de instrucciones Exit For como una manera alternativa de salir del mismo. La instruccin Exit For, que se utiliza a menudo en la evaluacin de alguna condicin (por ejemplo, If...Then), transfiere el control a la instruccin que sigue inmediatamente a la instruccin Next. Se pueden anidar bucles For...Next, colocando un bucle For...Next dentro de otro. Para ello, proporcione a cada bucle un nombre de variable nico como su contador. La siguiente construccin es correcta:
For I = 1 To 10 For J = 1 To 10 For K = 1 To 10 ... Next K Next J Next I
La declaracion Do Loop
Repite un bloque de instrucciones cuando una condicin es True o hasta que una condicin se convierta en True. Sintaxis
Do [{While | Until} condicin] [instrucciones] [Exit Do] [instrucciones] Loop
~ 34 ~
La diferencia en While y Until, radica en que While ejecutar una instruccin mientras se mantenga la condicin. Esto tambin quiere decir que el bucle puede no ejecutarse. Mientras que Until, al menos una vez se ejecutar buscando que cambie el valor.
Ejecuta uno de varios grupos de instrucciones, dependiendo del valor de una expresin. Sintaxis
Select Case expresin_prueba [Case lista_expresion-n [instrucciones-n]] ... [Case Else [instrucciones_else]] End Select
~ 35 ~