Anda di halaman 1dari 119

Abs (Funcin)

Devuelve un valor del mismo tipo que el que se pas como parmetro y que especifica el valor absoluto de un nmero. Sintaxis Abs(nmero) El argumento nmero puede ser cualquier expresin numrica vlida. Si nmero contiene Null, la funcin devolver Null; si es una variable no inicializada, devolver cero. Comentarios El valor absoluto de un nmero es su magnitud sin signo. Por ejemplo, ABS(-1) y ABS(1) devuelven 1.

Array (Funcin)
Devuelve una variante que contiene una matriz. Sintaxis Array(lista_argumentos) El argumento lista_argumentos requerido es una lista de valores delimitados por comas que se asignan a los elementos de la matriz contenida en el tipo Variant. Si no se especifica ningn argumento, se crea una matriz de longitud cero. Comentarios La notacin usada para hacer referencia a cualquier elemento de una matriz consiste en el nombre de la variable seguido por un parntesis que contiene un nmero de ndice para el elemento deseado. En el ejemplo siguiente, la primera instruccin crea una variable llamada A de tipo Variant. La segunda instruccin asigna una matriz a la variable A. La ltima instruccin asigna a otra variable el valor contenido en el segundo elemento de la matriz.
Dim A As Variant A = Array(10,20,30) B = A(2)

El lmite inferior de una matriz creada mediante la funcin Array se determina por el lmite inferior especificado con la instruccin Option Base, a menos que Array est autorizado

con el nombre de la biblioteca tipo (por ejemplo VBA.Array). Si se autoriza con el nombre de la biblioteca tipo, Array no se ver afectado por Option Base. Nota Una variable Variant no declarada como una matriz puede contener, no obstante, una matriz. Una variable Variant puede contener una matriz de cualquier tipo, excepto cadenas de longitud fija y tipos definidos por el usuario. Aunque una variable Variant que contiene una matriz es conceptualmente diferente de una matriz cuyos elementos son de tipo Variant, se tiene acceso a los elementos de la matriz del mismo modo.

Ejemplo de la funcin Array


En este ejemplo se utiliza la funcin Array para devolver una Variant que contiene una matriz.
Dim MiSemana, MiDa MiSemana = Array("Lun", "Mar", "Mir", "Jue", "Vie", "Sb", "Dom") ' Se da por hecho que el lmite inferior es igual a 1 ' en los valores devueltos (mediante Opcin Base) MiDa = MiSemana(2) ' MiDa contiene "Mar". MiDa = MiSemana(4) ' MiDa contiene "Jue".

Asc (Funcin)
Devuelve un tipo Integer que representa el cdigo de carcter correspondiente a la primera letra de una cadena. Sintaxis Asc(cadena) El argumento obligatorio cadena es una expresin de cadena vlida. Si cadena no contiene caracteres, se produce un error en tiempo de ejecucin.

Ejemplo de la funcin Asc


En este ejemplo se utiliza la funcin Asc para devolver el cdigo de carcter correspondiente a la primera letra de una cadena de caracteres.
Dim MiNmero MiNmero = Asc("A") MiNmero = Asc("a") MiNmero = Asc("Apple") ' Devuelve 65. ' Devuelve 97. ' Devuelve 65.

Funciones de conversin de tipos

Cada funcin convierte una expresin a un tipo de datos especfico. Sintaxis CBool(expresin) CByte(expresin) CCur(expresin) CDate(expresin) CDbl(expresin) CDec(expresin) CInt(expresin) CLng(expresin) CSng(expresin) CStr(expresin) CVar(expresin) El argumento obligatorio expresin es cualquier expresin de cadena o expresin numrica. Tipos devueltos El nombre de la funcin determina el tipo devuelto, como se muestra a continuacin: Funcin CBool CByte CCur CDate CDbl Tipo devuelto Boolean Byte Currency Date Double Intervalo del argumento expresin Cualquier expresin de cadena o numrica vlida. 0 a 255. -922.337.203.685.477,5808 a 922.337.203.685.477,5807. Cualquier expresin de fecha. -1.79769313486231E308 a -4,94065645841247E-324 para valores negativos; 4,94065645841247E-324 a

1,79769313486232E308 para valores positivos. CDec Decimal +/79.228.162.514.264.337.593.543.950.335 para nmeros basados en cero, es decir, nmeros sin decimales. Para nmeros con 28 decimales, el intervalo es +/-7,9228162514264337593543950335. La menor posicin para un nmero que no sea cero es 0,0000000000000000000000000001. -32.768 a 32.767; las fracciones se redondean. -2.147.483.648 a 2.147.483.647; las fracciones se redondean. -3,402823E38 a -1,401298E-45 para valores negativos; 1,401298E-45 a 3,402823E38 para valores positivos. El mismo intervalo que Double para valores numricos. El mismo intervalo que String para valores no numricos. El valor de retorno de CStr depende del argumento expresin.

CInt CLng CSng

Integer Long Single

CStr

String

CVar

Variant

Comentarios Si la expresin del argumento expresin que se pasa a la funcin est fuera del intervalo del tipo de dato al que se va a convertir, se produce un error. En general, el cdigo se puede documentar utilizando las funciones de conversin de tipos de datos para indicar que el resultado de alguna de las operaciones se debera expresar como un tipo de datos en particular, no como el tipo de datos predeterminado. Por ejemplo, utilice Ccur para forzar la ejecucin de operaciones con aritmtica monetaria en los casos en los que se hara con precisin simple, doble precisin o aritmtica entera. Debe utilizar funciones de conversin de tipos en lugar de Val para proporcionar conversiones que reconozcan las variantes internacionales. Por ejemplo, cuando utiliza CCur, se reconocen diferentes separadores decimales, diferentes separadores de millares y varias opciones monetarias dependiendo de la configuracin regional establecida en su equipo.

Cuando la parte fraccionaria es exactamente 0,5, CInt y CLng siempre redondean al nmero par ms cercano. Por ejemplo, 0,5 redondea a 0, y 1,5 redondea a 2. CInt y CLng se diferencian de las funciones Fix y Int en que truncan, en lugar de redondear, la parte fraccionaria de un nmero. Adems, Fix y Int siempre devuelven un valor del mismo tipo del que se le pasa. Utilice la funcin IsDate para determinar si se puede convertir date a una fecha o una hora. CDate reconoce literales de fecha y literales de hora adems de nmeros comprendidos dentro del intervalo de fechas aceptables. Al convertir un nmero a una fecha, la parte numrica entera se convierte a una fecha. Cualquier parte fraccionaria del nmero se convierte a la hora del da, comenzando a medianoche. CDate reconoce formatos de fecha que se ajusten a la configuracin regional de su sistema. Es posible que no se determine el orden correcto del da, mes y ao si se proporciona en un formato diferente del que reconoce la configuracin de fecha. Adems, no se puede reconocer un formato de fecha largo si contiene la cadena del da de la semana. Se proporciona una funcin CVDate por compatibilidad con versiones anteriores de Visual Basic. La sintaxis de la funcin CVDate es idntica a la de la funcin CDate; sin embargo, CVDate devuelve un Variant de subtipo Date en lugar del tipo Date real. Puesto que ahora hay un tipo de dato intrnseco Date, no es necesario CVDate. Se puede observar el mismo efecto al convertir una expresin a Date y asignarla despus a un Variant. Esta tcnica es coherente con la conversin de todos los dems tipos intrnsecos a sus equivalentes subtipos Variant. Nota La funcin CDec no devuelve un tipo de dato discreto; en su lugar, siempre devuelve un Variant con los valores convertidos a un subtipo Decimal.

Ejemplo de la funcin CDate


En este ejemplo se utiliza la funcin CDate para convertir una cadena en un tipo de datos Date. En general, no se recomienda utilizar fechas y horas como cadenas de caracteres en el cdigo definitivo de una aplicacin (como se muestra en el ejemplo). Use en su lugar literales de fecha y literales de hora (como #2/12/1969# y #4:45:23 PM#).
Dim MiFecha, MiHoraCorta, MiHora, MiHoraCorta MiFecha = "12 febrero 1969" ' Define la fecha. MiFechaCorta = CDate(MiFecha)' Convierte al tipo Date. MiHora = "4:35:47 PM" ' Define la hora. MiHoraCorta = CDate(MiHora) ' Convierte al tipo Date.

Ejemplo de la funcin CInt


En este ejemplo se utiliza la funcin CInt para convertir un valor a un tipo de datos Integer.

Dim MiDoble, MiEntero MiDoble = 2345.5678 MiEntero = CInt(MiDoble)

' MiDoble es un Double. ' MiEntero contiene 2346.

Ejemplo de la funcin CStr


En este ejemplo se utiliza la funcin CStr para convertir un valor numrico a un tipo de datos String.
Dim MiDoble, MiCadena MiDoble = 437.324 ' MiDoble es un Double. MiCadena = CStr(MiDoble) ' MiCadena contiene "437.324".

Ejemplo de la funcin CDbl


En este ejemplo se utiliza la funcin CDbl para convertir una expresin a un tipo de datos Double.
Dim MiMoneda, MiDoble MiMoneda = CCur(234.456784) ' MiMoneda es Currency. MiDoble = CDbl(MiMoneda * 8.2 * 0.01) ' Convierte el resultado a un tipo de datos Double.

Ejemplo de la funcin CVar


En este ejemplo se utiliza la funcin CVar para convertir una expresin a un tipo de datos Variant.
Dim MiEntero, MiVariante MiEntero = 4534 ' MiEntero es un Integer. MiVariante = CVar(MiEntero & "000")' MiVariante ' contiene la cadena 4534000.

Choose (Funcin)
Selecciona y devuelve un valor de una lista de argumentos. Sintaxis Choose(ndice, opcin-1[, opcin-2, ... [, opcin-n]]) La sintaxis de la funcin Choose consta de las siguientes partes:

Parte ndice opcin

Descripcin Requerido. Expresin numrica o campo que da como resultado un valor entre 1 y el nmero de opciones disponibles. Requerido. Expresin del tipo Variant que contiene una de las opciones posibles.

Comentarios La funcin Choose devuelve un valor de la lista de opciones dependiendo del valor de ndice. Si ndice es 1, la funcin Choose devolver la primera opcin de la lista; si ndice es 2, devolver la segunda y as sucesivamente. Puede utilizar la funcin Choose para buscar un valor en una lista de posibilidades. Por ejemplo, si ndice da como resultado 3 y opcin-1 = "uno", opcin-2 = "dos" y opcin-3 = "tres", la funcin Choose devuelve "tres". Esta funcionalidad es especialmente til cuando ndice representa el valor en un grupo de opcin. La funcin Choose evala todas las opciones de la lista, aunque slo devuelva una. Por esta razn, debe comprobar que no se producirn efectos no deseados. Por ejemplo, si utiliza la funcin MsgBox como parte de una expresin en todas las opciones, aparecer un cuadro de mensaje para cada opcin en el momento de evaluarla, aunque la funcin Choose slo vaya a devolver el valor de una de ellas. La funcin Choose devuelve Null si ndice es menor que 1 o mayor que el nmero de opciones de la lista. Si ndice no es un nmero entero, se redondear al entero ms cercano antes de su evaluacin.

Ejemplo de la funcin Choose


Este ejemplo utiliza la funcin Choose para mostrar un nombre como respuesta a un ndice transferido al procedimiento en el parmetro Ind.
Function GetChoice(Ind As Integer) GetChoice = Choose(Ind, "Speedy", "United", "Federal") End Function

Chr (Funcin)
Devuelve un tipo String que contiene el carcter asociado con el cdigo de carcter especificado.

Sintaxis Chr(cdigocar) El argumento cdigocar es un tipo Long que identifica a un carcter. Comentarios Los nmeros del 0 al 31 son los mismos que los cdigos ASCII estndar no imprimibles. Por ejemplo, Chr(10) devuelve un carcter de avance de lnea. El intervalo normal de cdigocar es 0255. Sin embargo, en sistemas DBCS, el intervalo real de cdigocar es de 32768 a 65535.

Ejemplo de la funcin Chr


En este ejemplo se utiliza la funcin Chr para devolver el carcter asociado con el cdigo de carcter especificado.
Dim MiCar MiCar = Chr(65) MiCar = Chr(97) MiCar = Chr(62) MiCar = Chr(37) ' ' ' ' Devuelve Devuelve Devuelve Devuelve A. a. >. %.

CurDir (Funcin)
Devuelve un tipo Variant (String) que representa la ruta de acceso actual. Sintaxis CurDir[(unidad)] El argumento requerido unidad, es una expresin de cadena que especifica una unidad de disco existente. Si no se especifica la unidad de disco o el argumento unidad es de longitud cero (""), la funcin CurDir devuelve la ruta de acceso de la unidad de disco actual. En Macintosh, CurDir ignora cualquier unidad especificada y simplemente devuelve la ruta de la unidad actual.

Ejemplo de la funcin CurDir


En este ejemplo se utiliza la funcin CurDir para obtener la ruta de acceso actual. En Macintosh, se ignoran las especificaciones de unidad dadas a CurDir. El nombre de la unidad predeterminada es "HD" y las porciones del nombre de la ruta se separan por dos

puntos ":" en lugar de por barras invertidas. Igualmente, se especificarn carpetas de Macintosh en lugar de \Windows.
' Se supone que la ruta de acceso actual en la unidad C es "C:\WINDOWS\SYSTEM" (en Microsoft Windows). ' Se supone que la ruta de acceso actual en la unidad D ' es "D:\EXCEL". ' Se supone que la unidad de disco actual es C. Dim MiRuta MiRuta = CurDir ' Se devuelve "C:\WINDOWS\SYSTEM". MiRuta = CurDir("C") ' Se devuelve"C:\WINDOWS\SYSTEM" MiRuta = CurDir("D") ' Se devuelve "D:\EXCEL".

ChDir (Instruccin)
Cambia el directorio o carpeta actual. Sintaxis ChDir ruta El argumento requerido ruta, es una expresin de cadena que identifica el directorio o carpeta que va a ser el nuevo directorio o carpeta predeterminado. La ruta puede incluir la unidad de disco. Si no se especifica la unidad, la instruccin ChDir cambia el directorio o carpeta predeterminado de la unidad actual. Comentarios La instruccin ChDir cambia el directorio predeterminado, pero no la unidad predeterminada. Por ejemplo, si la unidad de disco predeterminada es C, la siguiente instruccin cambia el directorio predeterminado en la unidad D, pero C contina siendo la unidad predeterminada:
ChDir "D:\TMP"

Ejemplo de la instruccin ChDir


' Cambia el directorio o carpeta actual a "MIDIR". ChDir "MIDIR" ' Se supone que "C:" es la unidad de disco actual. La siguiente instruccin cambia el directorio ChDir "D:\WINDOWS\SYSTEM"

Date (Funcin)

Devuelve un tipo Variant (Date) que contiene la fecha actual del sistema. Sintaxis Date Comentarios Utilice la instruccin Date para establecer la fecha del sistema.

DateAdd (Funcin)
Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado. Sintaxis DateAdd(intervalo, nmero, fecha) La sintaxis de la funcin DateAdd consta de los siguientes argumentos con nombre: Parte intervalo nmero Descripcin Requerido. Expresin de cadena que contiene el intervalo de tiempo que se desea agregar. Requerido. Expresin numrica con el nmero de intervalos que se desea agregar. Puede ser positiva (para obtener fechas futuras) o negativa (para obtener fechas pasadas). Requerido. Valor de tipo Variant (Date) o literal que representa la fecha en la que se agreg el intervalo.

fecha

Valores El argumento intervalo tiene los siguientes valores: Valor yyyy q Ao Trimestre Descripcin

m y d w ww h n s

Mes Da del ao Da Da de la semana Semana Hora Minuto Segundo

Comentarios Puede utilizar la funcin DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha. Por ejemplo, con DateAdd podra calcular una fecha 30 das posterior al da de hoy o una hora 45 minutos posterior a la actual. Si desea agregar das a fecha, puede utilizar Da del ao ("y"), Da ("d") o Da de la semana ("w"). La funcin DateAdd no devuelve nunca una fecha no vlida. En el ejemplo siguiente se agrega un mes al 31 de enero:
DateAdd("m", 1, "31-ene-95")

En este caso, DateAdd devuelve 28-feb-95 y no 31-feb-95. Si fecha es 31-ene-96, devolver 29-feb-96, ya que 1996 es un ao bisiesto. Si la fecha calculada va a resultar inferior al ao 100 (esto es, se restan ms aos que los que hay en fecha), se produce un error. Si nmero no es un valor de tipo Long se redondear al nmero entero ms cercano antes de ser evaluado. Nota El formato del valor devuelto por DateAdd es determinado por la configuracin del Panel de control, no por el formato que se pasa en el argumento fecha.

Ejemplo de la funcin DateAdd


Este ejemplo obtiene una fecha y, utilizando la funcin DateAdd, muestra una fecha que corresponde a un nmero especificado de meses en el futuro.

Dim PrimeraFecha As Date ' Declara las variables. Dim TipoIntervalo As String Dim Nmero As Integer Dim Msj TipoIntervalo = "m" ' "m" especifica meses como intervalo. PrimeraFecha = InputBox("Escriba una fecha") Nmero = InputBox("Escriba el nmero de meses a agregar") Msj = "Nueva fecha: " & DateAdd(TipoIntervalo, Nmero, PrimeraFecha) MsgBox Msj

DateDiff (Funcin)
Devuelve un valor de tipo Variant (Long) que especifica el nmero de intervalos de tiempo entre dos fechas determinadas. Sintaxis DateDiff(intervalo, fecha1, fecha2[, primerdasemana[, primerasemanaao]]) La sintaxis de la funcin DateDiff consta de los siguientes argumentos con nombre: Parte Intervalo Fecha1, fecha2 Primerdasemana Primerasemanaao Descripcin Requerido. Expresin de cadena con el intervalo de tiempo utilizado para calcular la diferencia entre fecha1 y fecha2. Requerido; Variant (Date). Las dos fechas que se van a utilizar en el clculo. Opcional. Constante que especifica el primer da de la semana. Si no se especifica, se asume que es el domingo. Opcional. Constante, que especifica la primera semana del ao. Si no se especifica, se asume que es aqulla en la que se encuentre el 1 de enero.

Valores El argumento intervalo toma los valores siguientes: Intervalo yyyy Ao Descripcin

q m y d w ww h n s

Trimestre Mes Da del ao Da Da de la semana Semana Hora Minuto Segundo

Comentarios Puede utilizar la funcin DateDiff para determinar el nmero de intervalos especificados que existen entre dos fechas. Por ejemplo, con DateDiff podra calcular el nmero de das entre dos fechas o el nmero de semanas entre hoy y el final del ao. Si desea saber el nmero de das entre fecha1 y fecha2, puede utilizar Da del ao ("y") o Da ("d"). Cuando intervalo es Da de la semana ("w"), DateDiff devuelve el nmero de semanas entre las dos fechas. Si fecha1 es lunes, DateDiff contar el nmero de lunes hasta fecha2. En la cuenta incluir fecha2, pero no fecha1. Si intervalo es Semana ("ww"), la funcin DateDiff devolver el nmero de semanas entre las dos fechas. En este caso contar el nmero de domingos entre fecha1 y fecha2. DateDiff contar fecha2 si es domingo, pero no fecha1, aunque sea domingo. Si fecha1 se refiere a un momento posterior en el tiempo a fecha2, la funcin DateDiff devolver un nmero negativo. El argumento primerdasemana afecta a los clculos que utilizan "w" y "ww" como smbolos de intervalo. Si fecha1 o fecha2 es un literal de fecha, el ao, si se especifica, pasar a ser una parte permanente de la fecha. Sin embargo, si fecha1 o fecha2 est comprendida entre comillas dobles ("") y se omite el ao, se insertar el ao en curso en el cdigo cada vez que se evale la expresin fecha1 o fecha2. As es posible escribir cdigo que se pueda usar en aos distintos. Cuando compara el 31 de diciembre con el 1 de enero del ao siguiente, DateDiff para un ao ("yyyy") devolver 1 aunque slo haya pasado un da.

Ejemplo de la funcin DateDiff


Este ejemplo utiliza la funcin DateDiff para mostrar el nmero de das entre una fecha dada y hoy.
Dim LaFecha As Date ' Declara las variables. Dim Msj LaFecha = InputBox("Escriba una fecha") Msj = "Das desde hoy: " & DateDiff("d", Now, LaFecha) MsgBox Msj

DatePart (Funcin)
Devuelve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada. Sintaxis DatePart(intervalo, fecha[,primerdasemana[, primerasemanaao]]) La sintaxis de la funcin DatePart consta de los siguientes argumentos con nombre: Parte intervalo fecha primerdasemana primerasemanaao Descripcin Requerido. Expresin de cadena con el intervalo de tiempo que desea devolver. Requerido. Tipo de valor Variant (Date) que se desea evaluar. Opcional. Una constante que especifica el primer da de la semana. Si no se especifica, se asume que es el domingo. Opcional. Una constante que especifica la primera semana del ao. Si no se especifica, se asume que es aqulla en la que se encuentre el 1 de enero.

Valores El argumento intervalo toma los siguientes valores: Valor yyyy Descripcin Ao

q m y d w ww h n s

Trimestre Mes Da del ao Da Da de la semana Semana Hora Minuto Segundo

El argumento primerdasemana toma los siguientes valores: Constante vbUseSystem vbSunday vbMonday vbTuesday Valor 0 1 2 3 Descripcin Utiliza el valor de la API de NLS. Domingo (predeterminado) Lunes Martes Mircoles Jueves Viernes Sbado

vbWednesday 4 vbThursday vbFriday vbSaturday 5 6 7

Comentarios Puede utilizar la funcin DatePart para evaluar una fecha y devolver un intervalo de tiempo especfico. Por ejemplo, podra utilizar DatePart para calcular el da de la semana o la hora actual. El argumento primerdasemana afecta a los clculos que utilizan los smbolos de intervalo "w" y "ww".

Si fecha es un literal de fecha, el ao que se especifica, pasar a ser una parte permanente de la fecha. Sin embargo, si fecha est encerrada entre comillas dobles ("") y se omite el ao, se insertar el ao en curso en el cdigo cada vez que se evale la expresin fecha. As es posible escribir cdigo que se pueda usar en aos distintos.

Ejemplo de la funcin DatePart


Este ejemplo obtiene una fecha y, utilizando la funcin DatePart, muestra el trimestre del ao que ocurre.
Dim LaFecha As Date ' Declara las variables. Dim Msj LaFecha = InputBox("Escriba una fecha:") Msj = "Trimestre: " & DatePart("q", LaFecha) MsgBox Msj

DateSerial (Funcin)
Devuelve un tipo Variant (Date) para un ao, mes y da especificados. Sintaxis DateSerial(ao, mes, da) La sintaxis de la funcin DateSerial consta de los siguientes argumentos con nombre: Parte ao mes da Descripcin Se requiere; Integer. Nmero entre 100 y 9999, inclusive o una expresin numrica. Se requiere; Integer. Cualquier expresin numrica. Se requiere; Integer. Cualquier expresin numrica.

Comentarios Para especificar una fecha, como el 31 de diciembre de 1991, el intervalo de nmeros para cada argumento de DateSerial debera estar en el intervalo normalmente aceptado para la unidad; es decir, 131 para das y 112 para meses. Sin embargo, puede especificar fechas relativas para cada argumento, usando cualquier expresin numrica que represente algn nmero de das, meses o aos, antes o despus de cierta fecha.

El ejemplo siguiente usa expresiones numricas en lugar de nmeros de fecha absoluta. Aqu la funcin DateSerial devuelve una fecha que es el da antes del primer da del mes (1 - 1), dos meses antes de agosto (8 - 2), 10 aos antes de 1990 (1990 - 10); en otras palabras, el 31 de mayo de 1980.
DateSerial(1990 - 10, 8 - 2, 1 - 1)

Bajo Windows 98 y Windows NT 5, los aos de dos dgitos para el argumento ao se interpretan basados en la configuracin de la mquina definida por el usuario. Los valores predeterminados son los valores entre 0 y 29, inclusive, se interpretan como los aos 2000 2029. Los valores predeterminados entre 30 y 99, se interpretan como los aos 19301999. Para el resto de los argumentos ao se usa un ao con los cuatro dgitos (por ejemplo, 1800). Versiones ms recientes de Windows interpretan los aos de dos dgitos basados en los valores predeterminados descriots anteriormente. Para estar seguro de que la funcin devuelve el valor apropiado, utilice un ao de cuatro dgitos. Cuando un argumento no est incluido en el intervalo aceptado normalmente para l, se incrementa hasta la siguiente unidad mayor, segn convenga. Por ejemplo, si especifica 35 das, se evala como un mes y algunos das, dependiendo de la parte del ao donde se aplique. No obstante, si un solo argumento est fuera de su intervalo -32.768 a 32.767 o si la fecha especificada por los tres argumentos, directamente o mediante expresin, no se incluye en el intervalo aceptable de fechas, se produce un error.

Ejemplo de la funcin DateSerial


En este ejemplo se utiliza la funcin DateSerial para devolver la fecha correspondiente al ao, mes y da especificados.
Dim MiFecha ' MiFecha contiene la fecha correspondiente al 12 de ' febrero de 1969. MiFecha = DateSerial(1969, 2, 12) ' Devuelve una fecha.

DateValue (Funcin)
Devuelve un tipo Variant (Date). Sintaxis DateValue(fecha) El argumento fecha es normalmente una expresin de cadena que representa una fecha del 1 de enero del ao 100, al 31 de diciembre de 9999. Sin embargo, fecha tambin puede ser

cualquier expresin que pueda representar una fecha, una hora o una fecha y una hora en ese intervalo. Comentarios Si fecha es una cadena que incluye solamente nmeros separados por separadores de fecha, DateValue reconoce el orden para mes, da y ao de acuerdo al formato de Fecha abreviado que se haya especificado para el sistema. DateValue tambin reconoce fechas claramente definidas que contengan nombres de mes, en forma completa o abreviada. Por ejemplo, adems de reconocer 30/12/1991 y 30/12/91, DateValue tambin reconoce 30 de diciembre de 1991 y dic 31, 1991. Si se omite la parte de ao de fecha, DateValue usa el ao actual de la fecha del sistema de su PC. Si el argumento fecha incluye informacin de hora, DateValue no la devuelve. Sin embargo, si fecha incluye informacin de hora no vlida (tal como "89:98"), ocurrir un error.

Ejemplo de la funcin DateValue


En este ejemplo se utiliza la funcin DateValue para convertir una cadena de caracteres a fecha. Tambin puede utilizar literales de fecha para asignar directamente una fecha a una variable Variant o Date , por ejemplo, MiFecha = #2/12/69#.
Dim MiFecha MiFecha = DateValue("12 de febrero de 1969") ' Devuelve una fecha.

Day (Funcin)
Devuelve el valor de tipo Variant (Integer) que especifica un nmero entero entre 1 y 31, inclusive, que representa el da del mes. Sintaxis Day(fecha) El argumento fecha es cualquier valor de tipo Variant, expresin numrica, cadena, o cualquier combinacin que pueda representar una fecha. Si fecha contiene Null, la funcin devolver Null.

Ejemplo de la funcin Day


En este ejemplo se utiliza la funcin Day para obtener el da del mes de una fecha especificada. En el entorno de desarrollo, el literal de fecha se presentar en formato abreviado, utilizando la configuracin regional del cdigo.
Dim MiFecha, MiDa MiFecha = #12 febrero 1969# ' Asigna una fecha. MiDa = Day(MiFecha) ' MiDa contiene 12.

DoEvents (Funcin)
Cede el control de la ejecucin al sistema operativo, para que ste pueda procesar otros eventos. Sintaxis DoEvents( ) Comentarios La funcin DoEvents devuelve un tipo Integer que representa el nmero de formularios abiertos por una versin independiente de Visual Basic, como la de Visual Basic Professional edition. DoEvents devuelve 0 en el resto de las aplicaciones. La funcin DoEvents pasa el control al sistema operativo. El control no se devuelve hasta que el sistema operativo haya terminado de procesar los eventos en cola y se hayan enviado todas las teclas de la cola SendKeys. DoEvents es ms til para tareas sencillas como permitir que un usuario cancele un proceso despus de que ha comenzado, por ejemplo una bsqueda de un archivo. Para procesos de ejecucin larga, es mejor dar preferencia al procesador utilizando un Timer o delegando la tarea a un componente EXE de ActiveX. En ltimo caso, la tarea puede continuar completamente independiente de la aplicacin y el sistema operativo tiene en cuenta la multitarea y los intervalos de tiempos. Advertencia Siempre que d preferencia al procesador temporalmente dentro de un procedimiento de evento, asegrese de que el procedimiento no se ejecute de nuevo desde una parte diferente del cdigo antes de que devuelva la primera llamada. Esto podra causar resultados impredecibles. Adems, no utilice la funcin DoEvents si existe la posibilidad de que otras aplicaciones interacten con el procedimiento, de manera imprevista, durante el tiempo en que ste ha cedido el control.

Ejemplo de la funcin DoEvents


En este ejemplo se utiliza la instruccin DoEvents para ceder el control de la ejecucin al sistema operativo una vez cada 1000 iteraciones del bucle. DoEvents devuelve el nmero de formularios de Visual Basic abiertos, slo cuando la aplicacin principal es Visual Basic.
' Crea una variable para mantener el nmero de ' formularios de Visual Basic cargados y visibles Dim I, OpenForms For I = 1 To 150000 ' Inicia el bucle. If I Mod 1000 = 0 Then ' Si el bucle se ejecuta 1000 veces. OpenForms = DoEvents ' Cede el control al sistema operativo. End If Next I ' Incrementa el contador del bucle.

Int, Fix (Funciones)


Devuelve la parte entera de un nmero. Sintaxis Int(nmero) Fix(nmero) El argumento nmero es un tipo Double o cualquier expresin numrica vlida. Si nmero contiene Null, la funcin devolver Null. Comentarios Las funciones Int y Fix eliminan la fraccin de un nmero y devuelven el valor entero resultante. La diferencia entre Int y Fix es que si el nmero es negativo, Int devuelve el primer entero negativo menor o igual a nmero, mientras que Fix devuelve el primer entero negativo mayor o igual a nmero. Por ejemplo, Int convierte -8.4 en -9 y Fix convierte -8.4 a -8. La funcin Fix(nmero) es equivalente a:
Sgn(nmero) * Int(Abs(nmero))

Ejemplo de las funciones Int y Fix


Este ejemplo muestra cmo las funciones Int y Fix devuelven la parte entera de los nmeros. En el caso de que el argumento sea un nmero negativo, la funcin Int devuelve el primer nmero entero negativo menor o igual que el nmero; la funcin Fix devuelve el primer entero negativo mayor o igual que el nmero.
Dim MiNmero MiNmero = Int(99.8) MiNmero = Fix(99.2) MiNmero = Int(-99.8) MiNmero = Fix(-99.8) MiNmero = Int(-99.2) MiNmero = Fix(-99.2) ' Devuelve 99. ' Devuelve 99. ' Devuelve -100. ' Devuelve -99. ' Devuelve -100. ' Devuelve -99.

Format (Funcin)
Devuelve un tipo Variant (String) que contiene una expresin formateada de acuerdo a las instrucciones contenidas en una expresin de formato. Sintaxis Format(expresin[, formato[, primerdadesemana[, primerdadeao]]]) La sintaxis de la funcin Format consta de las siguientes partes: Parte expresin formato primerdadesemana primerdadeao Descripcin Requerido. Cualquier expresin vlida. Opcional. Una expresin de formato definida por el usuario o con nombre vlida. Opcional. Una constante que especifica el primer da de la semana. Opcional. Una constante que especifica la primera semana del ao.

Valores El argumento primerdadesemana tiene estos valores:

Constante vbUseSystem vbSunday vbMonday vbTuesday

Valor 0 1 2 3

Descripcin Utiliza el valor de API NLS. Domingo (predeterminado) Lunes Martes Mircoles Jueves Viernes Sbado

vbWednesday 4 vbThursday vbFriday vbSaturday 5 6 7

El argumento primerdadeao tiene estos valores: Constante vbUseSystem vbFirstJan1 vbFirstFourDays vbFirstFullWeek 0 1 2 3 Valor Descripcin Utiliza el valor de API NLS. Comienza con la semana donde est el 1 de enero (predeterminado). Comienza con la primera semana del ao que tenga cuatro das como mnimo. Comienza con la primera semana completa del ao.

Comentarios Para dar formato Nmeros Fechas y horas Nmeros seriales de fecha y hora Cadenas Haga esto Utilice formatos numricos con nombre predefinidos o cree formatos numricos definidos por el usuario. Utilice formatos de fecha/hora con nombre predefinidos o cree formatos de fecha/hora definidos por el usuario. Utilice formatos de fecha y hora o formatos numricos. Cree sus propios formatos de cadena definidos por el usuario.

Si intenta dar formato a un nmero sin especificar formato, Format proporciona una funcionalidad similar a la de la funcin Str. Sin embargo, los nmeros positivos a los que se les ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor, mientras que los convertidos utilizando Str conservan el espacio inicial. Si est dando formato a una cadena numrica no localizada, debera usar un formato numrico definido por el usuario para asegurarse de que obtiene la apariencia que desa. Nota Si la configuracin de la propiedad Calendar es gregoriano y formato especifica dar formato a la fecha, la expresin proporcionada debe ser gregoriana. Si la configuracin de la propiedad Calendar de Visual Basic es Hijri, la expresin proporcionada debe ser Hijri. Si el calendario es gregoriano, el significado de los simbolos de la expresin formato no cambia. Si el calendario es Hijri, todos los smbolos de formato de fecha (por ejemplo, dddd, mmmm, yyyy) ytienen el mismo significado pero se aplica al calendario Hijri. Los smbolos de formato permanecen en ingls, los smbolos que se muestran como texto (por ejemplo, AM y PM) muestran la cadena (ingls o rabe) asociada con ese smbolo. El intervalo de ciertos smbolos cambia cuando el calendario es Hijri. Smbolo d dd ww mmm 1-30 1-30 1-51 Muestra nombres de mes enteros (los nombres de mes Hijri no tienen abreviaturas). 1-355 100-9666 Intervalo

y yyyy

Ejemplo de la funcin Format


En este ejemplo se muestran varios usos de la funcin Format para dar formato a valores utilizando formatos definidos por el usuario y formatos con nombre. La verdadera salida formateada presentada por el sistema para el separador de fecha (/), de hora (:) y el literal AM/ PM depende de las configuraciones en ese momento. Cuando las horas y las fechas se vuelven a listar en el entorno de desarrollo, se utilizan los formatos abreviados de hora y de fecha de la configuracin regional del cdigo. Cuando son presentados por el cdigo en ejecucin, se utilizan los formatos abreviados de fecha y hora de la configuracin regional del sistema, los cuales pueden diferir de la configuracin regional del cdigo. En este ejemplo se asume que es Ingls/Estados Unidos.

MiHora

y MiFecha se presentan en el entorno de desarrollo utilizando configuraciones actuales de fecha corta y hora corta.
Dim MiHora, MiFecha, MiCadena MiHora = #17:04:23# MiFecha = #27 enero 1993# ' Devuelve la hora actual del sistema en el formato largo de hora definido por el sistema. MiCadena = Format(Time, "Long Time") ' Devuelve la fecha actual del sistema en el formato largo de fecha definido por el sistema. MiCadena = Format(Date, "Long Date") MiCadena = Format(MiHora, "h:m:s") ' Devuelve "17:4:23". MiCadena = Format(MiHora, "hh:mm:ss AMPM") ' Devuelve "05:04:23 PM". MiCadena = Format(MiFecha, "dddd, d mmm aaaa")' Devuelve "Mircoles, ' 27 de Ene de 1993". ' Si no se suministra el formato, devuelve una cadena. MiCadena = Format(23) ' Devuelve "23". ' Formatos MiCadena = MiCadena = MiCadena = MiCadena = MiCadena = definidos por el usuario. Format(5459.4, "##,##0.00") ' Devuelve "5.459,40". Format(334.9, "###0.00") ' Devuelve "334,90". Format(5, "0.00%") ' Devuelve "500,00%". Format("HOLA", "<") ' Devuelve "hola". Format("Esto es", ">") ' Devuelve "ESTO ES".

FV (Funcin)
Devuelve un tipo Double que indica el valor futuro de una anualidad basndose en pagos peridicos y constantes y un tipo de inters tambin constante. Sintaxis FV(rate, nper, pmt[, pv[, type]]) La funcin FV consta de los siguientes argumentos con nombre: Parte rate Descripcin Requerido. Un tipo Double que indica el tipo de inters por periodo. Por ejemplo, si obtiene un crdito para un automvil a un porcentaje anual (TPA) del 10 por ciento y realiza pagos mensuales, el tipo por periodo ser 0,1/12 0,0083.

nper

Requerido. Un tipo Integer que indica el nmero total de periodos de pago de la anualidad. Por ejemplo, si realiza pagos mensuales correspondientes a un crdito para adquirir un automvil a cuatro aos, el crdito tendr un total de 4 * 12 ( 48) periodos de pago. Requerido. Un tipo Double que indica el pago que hay que realizar cada periodo. Normalmente, los pagos contienen un nominal y un inters que no vara a lo largo de la vida de la anualidad. Opcional. Un tipo Variant que indica el valor actual (o suma global) que tiene en este momento una serie de pagos para realizar en el futuro. Por ejemplo, en el momento de obtener un crdito para comprar un automvil, el importe del mismo es el valor actual para el prestamista de los pagos mensuales a realizar. Si se omite, se asume el valor 0. Opcional. Un tipo Variant que indica el momento en que vencen los pagos. Utilice 0 si los pagos vencen al final del periodo o 1 si los pagos vencen al principio del mismo. Si se omite, se asume el valor 0.

pmt

pv

type

Comentarios Una anualidad es una serie de pagos constantes en efectivo realizados a lo largo de un periodo de tiempo. Una anualidad puede ser un prstamo (como por ejemplo la hipoteca de un inmueble) o una inversin (como un plan de ahorro mensual). Los argumentos rate y nper deben calcularse utilizando periodos de pago expresados en las mismas unidades. Por ejemplo, si rate se calcula en meses, nper tambin debe calcularse en meses. Para todos los argumentos, el efectivo abonado (como depsitos de ahorro) se representa con nmeros negativos y el recibido (como cheques de dividendos) con nmeros positivos.

Ejemplo de la funcin FV
En este ejemplo se utiliza la funcin FV para obtener el valor futuro de una inversin, dado el tipo de inters acumulado en cada perodo (APR / 12), el nmero total de pagos (TotPagos), el pago (Pago), el valor actual de la inversin (ValAct), y un nmero que indica si el pago se realiza el principio o al final del perodo de pago (TipoPago). Observe que al representar Pago efectivo abonado, es un nmero negativo.
Dim Fmt, Pago, APR, TotPmts, Tipopago, PVal, FVal Const PERIODFIN = 0, PERIODINI = 1 ' Momento de los pagos. Fmt = "###,###,##0.00" ' Define el formato.

Pago = InputBox("Cunto piensa ahorrar cada mes?") APR = InputBox("Indique el tipo de inters porcentual anual esperado.") If APR > 1 Then APR = APR / 100 ' Asegura la forma correcta. TotPmts = InputBox("Durante cuntos meses piensa ahorrar?") Tipopago = MsgBox("Realiza los pagos al final del mes?", vbYesNo) If Tipopago = vbNo Then Tipopago = PERIODINI Else Tipopago = PERIODFIN PVal = InputBox("Cul es el saldo actual de esta cuenta de ahorro?") FVal = FV(APR / 12, TotPmts, -Pago, -PVal, Tipopago) MsgBox "El importe de sus ahorros ser " & Format(FVal, Fmt) & "."

IIf (Funcin)
Devuelve uno de entre dos valores, dependiendo de la evaluacin de una expresin. Sintaxis IIf(expr, truepart, falsepart) La sintaxis de la funcin IIf cuenta con los siguientes argumentos con nombre: Parte expr truepart falsepart Descripcin Requerido. Expresin que se desea evaluar. Requerido. Valor o expresin devuelta si expr es True. Requerido. Valor o expresin devuelta si expr es False.

Comentarios IIf siempre evala truepart y falsepart, aunque slo vaya a devolver una de ellas. Por esta razn, deber vigilar que no se produzcan efectos no deseados. Por ejemplo, si al evaluar falsepart se produce un error de divisin por cero, se generar un error aunque expr sea True.

Ejemplo de la funcin IIf


Este ejemplo utiliza la funcin IIf para calcular el parmetro Prueba del procedimiento Comprobar y devuelve la palabra "Grande" si la cantidad es mayor que 1000; de lo contrario, devuelve la palabra "Pequeo".
Function Comprobar (Prueba As Integer) Comprobar = IIf(Prueba > 1000, "Grande", "Pequeo") End Function

InputBox (Funcin)
Muestra un mensaje en un cuadro de dilogo, espera que el usuario escriba un texto o haga clic en un botn y devuelve un tipo String con el contenido del cuadro de texto. Sintaxis InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context]) La sintaxis de la funcin InputBox consta de estos argumentos con nombre: Parte prompt 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. 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.

title

default

xpos

ypos

helpfile

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.

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.

Ejemplo de la funcin InputBox


En este ejemplo se muestran distintas maneras de utilizar la funcin InputBox para indicar al usuario que debe introducir un valor. Si se omiten las posiciones x e y, el dilogo se centra automticamente segn los ejes respectivos. La variable MyValue contiene el valor introducido por el usuario, si ste hace clic sobre Aceptar o presiona ENTER. Si el usuario hace clic sobre Cancelar, se devuelve una cadena de caracteres de longitud cero.
Dim Mensaje, Ttulo, ValorPred, MiValor Mensaje = " Introduzca un nmero del 1 a 3" ' Establece el mensaje. Ttulo = "Demostracin de InputBox" ' Establece el ttulo. ValorPred = "1" ' Establece el valor predeterminado. ' Muestra el mensaje, el ttulo, y el valor predeterminado. MiValor = InputBox(Mensaje, Ttulo, ValorPred) ' Muestra el mensaje, el ttulo y el valor predeterminado. MiValor = InputBox(Mensaje, Ttulo, , , , "DEMO.HLP", 10) ' Se muestra el dilogo en la posicin 100, 100. MiValor = InputBox(Mensaje, Ttulo, ValorPred, 100, 100)

InStr (Funcin)
Devuelve un tipo Variant (Long) que especifica la posicin de la primera aparicin de una cadena en otra.

Sintaxis InStr([start, ]string1, string2[, compare]) La sintaxis de la funcin InStr tiene estos argumentos: Parte start Descripcin Opcional. Expresin numrica que establece la posicin inicial para cada bsqueda. Si se omite, la bsqueda comienza en la posicin del primer carcter. Si inicio contiene un valor Null, se produce un error. El argumento inicio se requiere si se especifica compare. Requerido. Expresin de cadena en la que se busca. Requerido. Expresin de cadena buscada. Opcional. Especifica el tipo de comparacin de cadena. Si compare es Null, ocurre un error. Si se omite compare, el valor Option Compare determina el tipo de comparacin. Especifica un LCID (LocaleID) vlido para usar reglas especficas de configuracin regional en la comparacin.

string1 string2 compare

Valores Los valores del argumento compare son: Constante vbUseCompareOption vbBinaryCompare vbTextCompare vbDatabaseCompare -1 0 1 2 Valor Descripcin Realiza una comparacin con los valores de la instruccin Option Compare. Realiza una comparacin binaria. Realiza una comparacin textual. Slo para Microsoft Access. Realiza una comparacin basada en la informacin en las bases de datos.

Valores devueltos Si string1 es de longitud cero 0 La funcin InStr devuelve

string1 es Null string2 es de longitud cero string2 es Null string2 no se encontr string2 se encontr dentro de string1 start > string2

Null start Null 0 Posicin en la que se halla la coincidencia 0

Ejemplo de la funcin InStr


En este ejemplo se utiliza la funcin InStr para devolver la posicin de la primera ocurrencia de una cadena en otra.
Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" ' Cadena en la que se busca. SearchChar = "P" ' Se busca "P". ' Una comparacin textual que comienza en la posicin 4. Devuelve 6. MyPos = Instr(4, SearchString, SearchChar, 1) ' Una comparacin binaria que comienza en la posicin 1. Devuelve 9. MyPos = Instr(1, SearchString, SearchChar, 0) ' La comparacin es binaria por configuracin predeterminada (si se omite el ltimo argumento). MyPos = Instr(SearchString, SearchChar) ' Devuelve 9. MyPos = Instr(1, SearchString, "W") ' Devuelve 0.

Int, Fix (Funciones)


Devuelve la parte entera de un nmero. Sintaxis Int(nmero) Fix(nmero) El argumento nmero es un tipo Double o cualquier expresin numrica vlida. Si nmero contiene Null, la funcin devolver Null. Comentarios

Las funciones Int y Fix eliminan la fraccin de un nmero y devuelven el valor entero resultante. La diferencia entre Int y Fix es que si el nmero es negativo, Int devuelve el primer entero negativo menor o igual a nmero, mientras que Fix devuelve el primer entero negativo mayor o igual a nmero. Por ejemplo, Int convierte -8.4 en -9 y Fix convierte -8.4 a -8. La funcin Fix(nmero) es equivalente a:
Sgn(nmero) * Int(Abs(nmero))

Ejemplo de las funciones Int y Fix


Este ejemplo muestra cmo las funciones Int y Fix devuelven la parte entera de los nmeros. En el caso de que el argumento sea un nmero negativo, la funcin Int devuelve el primer nmero entero negativo menor o igual que el nmero; la funcin Fix devuelve el primer entero negativo mayor o igual que el nmero.
Dim MiNmero MiNmero = Int(99.8) MiNmero = Fix(99.2) MiNmero = Int(-99.8) MiNmero = Fix(-99.8) MiNmero = Int(-99.2) MiNmero = Fix(-99.2) ' Devuelve 99. ' Devuelve 99. ' Devuelve -100. ' Devuelve -99. ' Devuelve -100. ' Devuelve -99.

IPmt (Funcin)
Devuelve un tipo Double que indica el pago de intereses durante un periodo determinado de una anualidad basndose en pagos constantes y peridicos y un tipo de inters tambin constante. Sintaxis IPmt(rate, per, nper, pv[, fv[, type]]) La funcin IPmt consta de los siguientes argumentos con nombre: Parte rate Descripcin Requerido. Un tipo Double que indica el tipo de inters por periodo. Por ejemplo, si obtiene un crdito para un automvil a

una tasa porcentual anual (TPA) del 10 por ciento y realiza pagos mensuales, el tipo por periodo ser 0,1/12 0,0083. per nper Requerido. Un tipo Double que indica el periodo de pago, entre 1 y nper. Requerido. Un tipo Double que indica el nmero total de periodos de pago de la anualidad. Por ejemplo, si realiza pagos mensuales correspondientes a un crdito para adquirir un automvil a cuatro aos, el crdito tendr un total de 4 * 12 ( 48) periodos de pago. Requerido. Un tipo Double que indica el valor actual, o valor de hoy, de una serie de pagos o cobros futuros. Por ejemplo, en el momento de obtener un crdito para comprar un automvil, el importe del mismo es el valor actual para el prestamista de los pagos mensuales a realizar. Opcional. Un tipo Variant que indica el valor futuro o balance en efectivo que se desea tener una vez realizado el pago final. Por ejemplo, el valor futuro de un crdito es 0, puesto que tal es su valor despus del pago final. Sin embargo, si desea ahorrar 5.000.000 para la educacin de su hijo durante 18 aos, el valor futuro ser 5.000.000. Si se omite, se asume el valor 0. Opcional. Un tipo Variant que indica el momento en que vencen los pagos. Utilice 0 si los pagos vencen al final del periodo o 1 si los pagos vencen al principio del mismo. Si se omite, se asume el valor 0.

pv

fv

type

Comentarios Una anualidad es una serie de pagos constantes en efectivo realizados a lo largo de un periodo de tiempo. Una anualidad puede ser un prstamo (como por ejemplo la hipoteca de un inmueble) o una inversin (como un plan de ahorro mensual). Los argumentos rate y nper deben calcularse utilizando periodos de pago expresados en las mismas unidades. Por ejemplo, si rate se calcula en meses, nper tambin debe calcularse en meses. Para todos los argumentos, el efectivo abonado (como depsitos de ahorro) se representa con nmeros negativos y el recibido (como cheques de dividendos) con nmeros positivos.

Ejemplo de la funcin IPmt


En este ejemplo se utiliza la funcin IPmt para calcular la parte de un pago correspondiente al inters cuando todos los pagos son de igual valor. Se dan el tipo de inters porcentual por perodo (APR / 12), el perodo de pago para el cual se desea determinar la parte correspondiente al inters (Periodo), el nmero total de pagos (TotPagos), el valor actual o nominal del crdito (ValAct), el valor futuro del crdito (ValFut), y un nmero que indica si los pagos vencen al comienzo o al final de cada perodo de pago (TipoPago).
Dim FVal, Fmt, PVal, APR, TotPmts, Tipopago, Period, IntPmt, TotInt, Msg Const PERIODFIN = 0, PERIODINI = 1 ' Momento de los pagos. FVal = 0 ' Normalmente 0 (crdito). Fmt = "###,###,##0.00" ' Define el formato. PVal = InputBox("Cunto dinero desea solicitar?") APR = InputBox("Cul es la tasa anual porcentual del crdito?") If APR > 1 Then APR = APR / 100 ' Asegura la forma correcta. TotPmts = InputBox("Nmero de pagos mensuales") Tipopago = MsgBox("Realiza los pagos al final de cada mes?", vbYesNo) If Tipopago = vbNo Then Tipopago = PERIODINI Else Tipopago = PERIODFIN For Period = 1 To TotPmts ' Inters total. IntPmt = IPmt(APR / 12, Period, TotPmts, -PVal, FVal, Tipopago) TotInt = TotInt + IntPmt Next Period Msg = "Pagar un total de " & Format(TotInt, Fmt) Msg = Msg & "de intereses por este crdito." MsgBox Msg ' Muestra el resultado.

IRR (Funcin)
Devuelve un tipo Double que indica la tasa interna de retorno de una serie de flujos de efectivo peridicos (pagos y cobros). Sintaxis IRR(values()[, guess]) La funcin IRR consta de los siguientes argumentos con nombre: Parte values() Descripcin Requerido. Matriz de tipo Double que indica valores de flujo de efectivo. La matriz debe contener al menos un valor negativo (un pago) y uno positivo (un cobro). Opcional. Un tipo Variant que indica un valor que se estima que

Guess

devolver IRR. Si se omite, guess ser 0,1 (10 por ciento).

Comentarios La tasa interna de retorno es el tipo de inters recibido por una inversin consistente en pagos y cobros que se producen a intervalos peridicos. La funcin IRR utiliza el orden de los valores de la matriz para interpretar el orden de los pagos y cobros. Asegrese de indicar los valores de los pagos y cobros siguiendo la secuencia correcta. No es necesario que el flujo de efectivo en cada periodo sea constante, como sera en el caso de una anualidad. IRR se calcula por iteracin. Comenzando con el valor de guess, IRR realiza un clculo cclico hasta que el resultado tiene una precisin del 0,00001 por ciento. Si despus de 20 intentos no puede encontrar un resultado, IRR falla.

Ejemplo de la funcin IRR


En este ejemplo, la funcin IRR devuelve la tasa interna de retorno para una serie de 5 flujos de efectivo contenidos en la matriz Valor().El primer elemento de la matriz es un flujo negativo de efectivo que representa los costes iniciales de un negocio. Los otros 4 flujos son positivos, y representan los 4 aos siguientes. Guess es la tasa interna de retorno estimada.
Dim Guess, Fmt, RetRate, Msg Static Valores(5) As Double ' Define la matriz. Guess = .1 ' Guess comienza con el 10%. Fmt = "#0.00" ' Formato de porcentaje. Valores(0) = -70000 ' Costes iniciales del negocio. ' Flujos positivos representando ingresos en cuatro aos siguientes. Valores(1) = 22000 : Valores(2) = 25000 Valores(3) = 28000 : Valores(4) = 31000 RetRate = IRR(Valores(), Guess) * 100 ' Calcula la tasa interna. Msg = "La tasa interna de retorno para estos cinco flujos de efectivo es " Msg = Msg & Format(RetRate, Fmt) & " por ciento." MsgBox Msg ' Muestra la tasa interna de retorno.

IsDate (Funcin)
Devuelve un valor de tipo Boolean que indica si una expresin se puede convertir en una fecha.

Sintaxis IsDate(expresin) El argumento expresin requerido, es un tipo de datos Variant que contiene una expresin de fecha o una expresin de cadena reconocible como una fecha o una hora. Comentarios La funcin IsDate devuelve True si la expresin es una fecha o se puede reconocer como una fecha vlida; en caso contrario, devuelve False. En Microsoft Windows, el intervalo de fechas vlidas va desde el 1 de enero de 100 D. de C. hasta el 31 de diciembre de 9999 D.de C.; los intervalos varan de un sistema operativo a otro.

Ejemplo de la funcin IsDate


En este ejemplo se utiliza la funcin IsDate para determinar si una expresin puede convertirse en fecha.
Dim MiFecha, TuFecha, SinFecha, MiPrueba MiFecha = "12 febrero 1969": TuFecha = #2/12/69#: SinFecha = "Hola" MiPrueba = IsDate(MiFecha) ' Devuelve True. MiPrueba = IsDate(TuFecha) ' Devuelve True. MiPrueba = IsDate(SinFecha) ' Devuelve False.

IsEmpty (Funcin)
Devuelve un valor de tipo Boolean que indica si una variable ha sido inicializada. Sintaxis IsEmpty(expresin) El argumento expresin requerido es un tipo de datos Variant que contiene una expresin de cadena o una expresin numrica. Sin embargo, ya que la funcin IsEmpty se utiliza para determinar si las variables individuales estn inicializadas, el argumento expresin es generalmente un nico nombre de variable. Comentarios La funcin IsEmpty devuelve True si la variable no est inicializada o est explictamente configurada a Empty; en cualquier otro caso, devuelve False. Se devuelve False siempre

que expresin contenga ms de una variable. La funcin IsEmpty solamente devuelve informacin significativa para datos de tipo Variant.

Ejemplo de la funcin IsEmpty


En este ejemplo se utiliza la funcin IsEmpty para determinar si se ha inicializado o no una variable.
Dim MiVar, MiPrueba MiPrueba = IsEmpty(MiVar) ' Devuelve True.

MiVar = Null ' Asigna Null. MiPrueba = IsEmpty(MiVar) ' Devuelve False. MiVar = Empty ' Asigna Empty. MiPrueba = IsEmpty(MiVar) ' Devuelve True.

IsNull (Funcin)
Devuelve un valor de tipo Boolean que indica si una expresin contiene datos no vlidos (Null). Sintaxis IsNull(expresin) El argumento expresin requerido, es un tipo de datos Variant que contiene una expresin numrica o una expresin de cadena. Comentarios La funcin IsNull devuelve True si expresin es Null; en cualquier otro caso, IsNull devuelve False. Si expresin est formada por ms de una variable, la presencia de Null en cualquier variable hace que se devuelva True para toda la expresin. El valor Null indica que Variant contiene datos no vlidos. La funcin Null no es la misma que la funcin Empty, la cual indica que una variable todava no ha sido inicializada. Tampoco es lo mismo que una cadena de longitud cero (""), que a veces se suele llamar cadena nula. Importante Utilice la funcin IsNull para determinar si una expresin contiene un valor Null. Las expresiones que espera evaluar como True en ciertas circunstancias, tales como If Var = Null AND If Var <> Null, son siempre False. Esto se debe a que cualquier expresin que contiene un Null es por si misma de valor Null y por consiguiente False.

Ejemplo de la funcin IsNull


En este ejemplo se utiliza la funcin IsNull para determinar si una variable contiene Null.
Dim MiVar, MiPrueba MiPrueba = IsNull(MiVar) MiVar = "" MiPrueba = IsNull(MiVar) MiVar = Null MiPrueba = IsNull(MiVar) ' Devuelve False. ' Devuelve False. ' Devuelve True.

IsNumeric (Funcin)
Devuelve un valor de tipo Boolean que indica si una expresin se puede evaluar como un nmero. Sintaxis IsNumeric(expresin) El argumento expresin requerido, es un tipo de datos Variant que contiene una expresin numrica o una expresin de tipo cadena. Comentarios La funcin IsNumeric devuelve True si la expresin completa se reconoce como un nmero; en otro caso, devuelve False. La funcin IsNumeric devuelve False si expresin es una expresin de fecha.

Ejemplo de la funcin IsNumeric


En este ejemplo se utiliza la funcin IsNumeric para determinar si una variable se puede evaluar como un nmero.
Dim MiVar, MiPrueba MiVar = "53" MiPrueba = IsNumeric(MiVar) MiVar = "459.95" MiPrueba = IsNumeric(MiVar) MiVar = "45 Help" MiPrueba = IsNumeric(MiVar) ' Asigna un valor. ' Devuelve True. ' Asigna valor. ' Devuelve True. ' Asigna valor. ' Devuelve False.

LCase (Funcin)
Devuelve un tipo String que se ha convertido a minsculas. Sintaxis LCase(cadena) El argumento cadena es cualquier expresin de cadena vlida. Si string contiene Null, se devuelve Null. Comentarios Slo se convierten a minsculas las letras maysculas. Las letras minsculas o los caracteres que no son letras no sufren cambios.

Ejemplo de la funcin LCase


En este ejemplo se utiliza la funcin LCase para devolver la versin en minsculas de una cadena.
Dim UpperCase, LowerCase Uppercase = "Hola Mundo 1234" Lowercase = Lcase(UpperCase) ' Cadena a convertir. ' Devuelve "hola mundo 1234".

Left (Funcin)
Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres del lado izquierdo de una cadena. Sintaxis Left(string, length) La sintaxis de la funcin Left tiene estos argumentos con nombre: Parte string Descripcin Requerido. Expresin de cadena de la cual se devuelven los caracteres que

estn ms a la izquierda. Si string contiene Null, se devuelve Null. length Requerido, un tipo Variant (Long). Expresin numrica que indica cuntos caracteres se van a devolver. Si es 0, devuelve una cadena de longitud cero (""). Si es mayor o igual al nmero de caracteres en string, se devuelve la cadena entera.

Ejemplo de la funcin Left


En este ejemplo se utiliza la funcin Left para devolver un nmero especificado de caracteres del lado izquierdo de una cadena.
Dim UnaCadena, MiCadena UnaCadena = "Hola Mundo" MiCadena = Left(UnaCadena, 1) MiCadena = Left(UnaCadena, 6) MiCadena = Left(UnaCadena, 10) ' Define la cadena. ' Devuelve "H". ' Devuelve "Hola M". ' Devuelve "Hola Mundo".

Len (Funcin)
Devuelve un tipo Long que contiene el nmero de caracteres en una cadena o el nmero de bytes necesarios para almacenar una variable. Sintaxis Len(cadena | nombrevar) La sintaxis de la funcin Len consta de las siguientes partes: Parte cadena Nombrevar Descripcin Cualquier expresin de cadena vlida. Si cadena contiene Null, se devuelve Null. Cualquier nombre de variable vlido. Si nombrevar contiene Null, se devuelve Null. Si nombrevar es un tipo Variant, Len acta igual que con un tipo String y siempre devuelve el nmero de caracteres que contiene.

Ejemplo de la funcin Len


MiCadena = "Hola a todos" MiLong = Len(MiCadena) ' Inicializa la cadenas. ' Devuelve 12.

LTrim, Rtrim y Trim (Funciones)


Devuelve un tipo Variant (String) que contiene una copia de una cadena determinada sin espacios a la izquierda (LTrim), sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim). Sintaxis LTrim(cadena) RTrim(cadena) Trim(cadena) El argumento cadena obligatorio es cualquier expresin de cadena vlida. Si cadena contiene Null, se devuelve Null.

Ejemplo de las funciones LTrim, RTrim y Trim


En este ejemplo se utilizan las funciones LTrim and RTrim para eliminar espacios a la derecha y a la izquierda de una variable de cadena de caracteres. El uso de la funcin Trim logra el mismo resultado.
Dim MiCadena, CadenaCorte MiCadena = " <-Cortar-> " ' Inicializa la cadena. CadenaCorte = LTrim(MiCadena) ' CadenaCorte = "<-Cortar-> ". CadenaCorte = RTrim(MiCadena) ' CadenaCorte = " <-Cortar->". CadenaCorte = LTrim(RTrim(MiCadena)) ' CadenaCorte = "<-Cortar->". ' El uso de la funcin Trim por s sola logra el mismo resultado. CadenaCorte = Trim(MiCadena) ' CadenaCorte = "<-Cortar->".

Mid (Funcin)
Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres de una cadena. Sintaxis Mid(string, start[, length])

La sintaxis de la funcin Mid tiene estos argumentos con nombre: Parte string start Descripcin Requerido. Expresin de cadena de la cual se devuelven los caracteres. Si string contiene Null, se devuelve Null. Requerido; un tipo Long. Posicin de carcter en string en la cual comienza la parte que se quiere tomar. Si start es mayor que el nmero de caracteres en la string, Mid devuelve una cadena de longitud cero (""). Requerido; un tipo Variant (Long). Nmero de caracteres que se van a devolver. Si se omite o en el texto hay menos de length caracteres (incluyendo el carcter de start), se devuelven todos los caracteres desde la posicin de start hasta el final de la cadena.

length

Comentarios Para determinar el nmero de caracteres en string, utilice la funcin Len.

Ejemplo de la funcin Mid


En este ejemplo se utiliza la funcin Mid para devolver un nmero especificado de caracteres de una cadena.
Dim MiCadena, PrimeraPalabra, UltimaPalabra, PalabraMedia MiCadena = "Demostracin funcin Mid" ' Crea la cadena de texto. PrimeraPalabra = Mid(MiCadena, 1, 12) ' Devuelve "Demostracin". UltimaPalabra = Mid(MiCadena, 21, 3) ' Devuelve "Mid". PalabraMedia = Mid(MiCadena, 14) ' Devuelve "funcin Mid".

Este segundo ejemplo utiliza MidB y una funcin definida por el usuario (MidMbcs) para devolver tambin caracteres de una cadena. La diferencia en este ejemplo es que la cadena de entrada es ANSI y la longitud en bytes.
Function MidMbcs(ByVal str as String, start, length) MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode) End Function Dim MiCadena MiCadena = "AbCdEfG" ' Donde "A", "C", "E", y "G" son DBCS y "b", "d", ' y "f" son SBCS. MiNuevaCadena = Mid(MiCadena, 3, 4) ' Devuelve ""CdEf" MiNuevaCadena = MidB(MiCadena, 3, 4) ' Devuelve ""bC" MiNuevaCadena = MidMbcs(MiCadena, 3, 4)

' Devuelve "bCd"

Minute (Funcin)
Devuelve un valor de tipo Variant (Integer) que especifica un nmero entero entre 0 y 59, inclusive, que representa el minuto de la hora. Sintaxis Minute(hora) El argumento hora es cualquier valor de tipo Variant, una expresin numrica, expresin de cadena o cualquier combinacin que pueda representar una hora. Si hora contiene Null, la funcin devolver Null.

Ejemplo de la funcin Minute


En este ejemplo se utiliza la funcin Minute para obtener los minutos de una hora especificada. En el entorno de desarrollo, el literal de hora se presentar en formato abreviado, utilizando la configuracin regional del cdigo.
Dim MiTiempo, MiMinuto MiTiempo = #4:35:17 PM# ' Asigna una hora. MiMinuto = Minute(MiTiempo) ' MiMinuto contiene 35.

Month (Funcin)
Devuelve un valor de tipo Variant (Integer) que especifica un nmero entero entre 1 y 12, inclusive, que representa el mes del ao. Sintaxis Month(fecha) El argumento fecha es cualquier valor de tipo Variant, una expresin numrica, expresin de cadena o cualquier combinacin, que pueda representar una fecha. Si fecha contiene Null, la funcin devolver Null.

Ejemplo de la funcin Month


En este ejemplo se utiliza la funcin Month para obtener el mes de una fecha especificada. En el entorno de desarrollo, la hora(literal de fecha), se presentar en formato abreviado, utilizando la configuracin regional del cdigo.
Dim MiFecha, MiMes MiFecha = #12 febrero 1969# ' Asigna una fecha. MiMes = Month(MiFecha) ' MiMes contiene 2.

MonthName (Funcin)
Descripcin Devuelve una cadena que indica el mes especificado. Sintaxis MonthName(mes [, abreviar]) La sintaxis de la funcin MonthName consta de las siguientes partes: Parte mes abreviar Descripcin Requerido. La designacin numrica del mes. Por ejemplo, enero es 1, febrero es 2, etctera. Opcional. El valor Boolean que indica si se va a abreviar el nombre del mes. Si se omite, el valor predeterminado es False, que significa que el nombre del mes no se abrevia. .Mes=Diciembre (si hoy es navidad) Mes=Julio

Mes=MonthName(Month(Now)) Mes=MonthName(Month(#7/28/2004#))

MsgBox (Funcin)
Muestra un mensaje en un cuadro de dilogo, espera a que el usuario haga clic en un botn y devuelve un tipo Integer correspondiente al botn elegido por el usuario.

Sintaxis MsgBox(prompt[, buttons][, title][, helpfile, context]) La sintaxis de la funcin MsgBox consta de estos argumentos con nombre: Parte prompt 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.

buttons

title

helpfile

context

Valores El argumento buttons tiene estos valores: Constante VbOKOnly VbOKCancel VbAbortRetryIgnore 0 1 2 Valor Descripcin Muestra solamente el botn Aceptar. Muestra los botones Aceptar y Cancelar. Muestra los botones Anular, Reintentar e Ignorar.

VbYesNoCancel VbYesNo VbRetryCancel VbCritical VbQuestion VbExclamation VbInformation VbDefaultButton1 VbDefaultButton2 VbDefaultButton3 VbDefaultButton4 VbApplicationModal

3 4 5 16 32 48 64 0 256 512 768 0

Muestra los botones S, No y Cancelar. Muestra los botones S y No. Muestra los botones Reintentar y Cancelar. 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 VbMsgBoxRight VbMsgBoxRtlReading

16384 65536 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 vbAbort vbRetry vbIgnore vbYes vbNo 1 2 3 4 5 6 7 Valor Descripcin Aceptar Cancelar Anular Reintentar Ignorar S No

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. Nota Si desea especificar ms que el primer argumento con nombre, debe utilizar MsgBox en una expresin. Si desea omitir algn argumento de posicin, debe incluir el delimitador de coma correspondiente.

Ejemplo de la funcin MsgBox


En este ejemplo se utiliza la funcin MsgBox para mostrar un mensaje de error crtico en un cuadro de dilogo con botones S y No. El botn No se considera la respuesta predeterminada. El valor devuelto por la funcin MsgBox depende del botn elegido por el usuario. En este ejemplo, se supone que DEMO.HLP es un archivo de Ayuda que contiene un tema con un nmero de contexto igual a 1000.
Dim Mensaje, Estilo, Ttulo, Ayuda, Ctxt, Respuesta, MiCadena Mensaje = "Desea continuar?" ' Define el mensaje. Estilo = vbYesNo + vbCritical + vbDefaultButton2 ' Define los botones. Ttulo = "Demostracin de MsgBox" ' Define el ttulo. Ayuda = "DEMO.HLP" ' Define el archivo de ayuda. Ctxt = 1000 ' Define el tema

' el contexto ' Muestra el mensaje. Respuesta = MsgBox(Mensaje, Estilo, Ttulo, Ayuda, Ctxt) If Respuesta = vbYes Then ' El usuario eligi el botn S. MiCadena = "S" ' Ejecuta una accin. Else ' El usuario eligi el botn No. MiCadena = "No" ' Ejecuta una accin. End If

Now (Funcin)
Devuelve un valor de tipo Variant (Date) que especifica la fecha y hora actuales de acuerdo con la configuracin de la fecha y la hora del sistema de su equipo. Sintaxis Now

QBColor (Funcin)
Devuelve un tipo Long que representa el cdigo de color RGB correspondiente al nmero de color especificado. Sintaxis QBColor(color) El argumento color es un nmero entero entre 0-15. Valores El argumento color toma los siguientes valores: Nmero 0 1 Negro Azul Color Nmero 8 9 Gris Azul claro Color

2 3 4 5 6 7

Verde Aguamarina Rojo Fucsia Amarillo Blanco

10 11 12 13 14 15

Verde claro Aguamarina claro Rojo claro Fucsia claro Amarillo claro Blanco brillante

Comentarios El argumento color representa los valores de color que utilizan otras versiones de Basic (como Microsoft Visual Basic para MS-DOS y Basic Compiler). Comenzando por el byte menos significativo, el valor devuelto especifica los valores de rojo, verde y azul necesarios para establecer el color correspondiente en el sistema RGB que utiliza Visual Basic para Aplicaciones.

Ejemplo de la funcin QBColor


Este ejemplo utiliza la funcin QBColor para cambiar la propiedad BackColor del formulario transferido como MiFormulario al color indicado por CdigoColor. QBColor acepta valores enteros entre 0 y 15.
Sub CambiarColorFondo (CdigoColor As Integer, MiFormulario As Form) MiFormulario.BackColor = QBColor(CdigoColor) End Sub

Replace (Funcin)
Descripcin Devuelve una cadena en la que se reemplaz una subcadena especificada con otra subcadena un nmero especificado de veces. Sintaxis Replace(expresin, encontrar, reemplazarCon [, inicio[, contar[, comparar]]]) La sintaxis de la funcin Replace consta de los siguientes argumentos con nombre:

Parte expresin encontrar reemplazarCon inicio

Descripcin Requerido. Una expresin de cadena que contiene la subcadena que reemplazar. Requerido. La subcadena que se busca. Requerido. La subcadena de sustitucin. Opcional. La posicin dentro de la expresin donde se empezar a buscar la subcadena. Si se omite, se supone que es 1. Opcional. El nmero de sustituciones de subcadenas que se realizarn. Si se omite, el valor predeterminado es 1, que significa que se hagan todas las sustituciones posibles. Opcional. El valor nmerico que indica la clase de comparacin que se realizar cuando se evalen las subcadenas. Vea la seccin Valores para consultar los valores posibles.

contar

comparar

Right (Funcin)
Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres del lado derecho de una cadena. Sintaxis Right(string, lenght) La sintaxis de la funcin Right tiene estos argumentos con nombre: Parte string lenght Descripcin Requerido. Expresin de cadena desde la cual se devuelven los caracteres que estn ms a la derecha. Si string contiene Null, se devuelve Null. Requerido, un tipo Variant (Long). Expresin numrica que indica cuntos caracteres se van a devolver. Si es 0, se devuelve una cadena de longitud cero (""). Si es mayor o igual al nmero de caracteres en string, se devuelve la cadena completa.

Comentarios Para determinar el nmero de caracteres en string, utilice la funcin Len.

Ejemplo de la funcin Right


En este ejemplo se utiliza la funcin Right para devolver un nmero especificado de caracteres de la parte derecha de la cadena.
Dim UnaCadena, MiCadena UnaCadena = "Hola Mundo" ' Define una cadena. MiCadena = Right(UnaCadena, 1) ' Devuelve "o". MiCadena = Right(UnaCadena, 6) ' Devuelve "Mundo". MiCadena = Right(UnaCadena, 20) ' ' Devuelve "Hola Mundo".

Rnd (Funcin)
Devuelve un tipo Single que contiene un nmero aleatorio. Sintaxis Rnd[(nmero)] El argumento opcional nmero es un tipo Single o cualquier expresin numrica vlida. Valores devueltos Si nmero es Menor que cero Mayor que cero Igual a cero No se especifica Rnd genera El mismo nmero todas las veces, utilizando nmero como valor de semilla. El siguiente nmero aleatorio de la secuencia. El nmero generado ms recientemente. El siguiente nmero aleatorio de la secuencia.

Comentarios La funcin Rnd devuelve un valor menor que 1 pero mayor o igual que cero. El valor de nmero determina cmo la funcin Rnd genera un nmero aleatorio:

Para cualquier valor de semilla inicial se genera la misma secuencia de nmeros. Esto es debido a que cada llamada sucesiva a la funcin Rnd usar el nmero anterior como valor de semilla para el siguiente nmero de la secuencia. Antes de llamar a la funcin Rnd, utilice la instruccin Randomize sin argumento para inicializar el generador de nmeros aleatorios con un valor de semilla basado en el reloj del sistema. Para producir enteros aleatorios en un intervalo dado, use esta frmula:
Int((Lmite_superior - lmite_inferior + 1) * Rnd + lmite_inferior)

Aqu, lmite_superior es el nmero mayor del intervalo y lmite_inferior es el nmero menor del intervalo. Nota Para repetir secuencias de nmeros aleatorios, llame a la funcin Rnd con un argumento negativo antes de utilizar la funcin Randomize con un argumento numrico. Al utilizar la instruccin Randomize con el mismo valor de nmero no se repite la secuencia anterior.

Ejemplo de la funcin Rnd


En este ejemplo se utiliza la funcin Rnd para generar un valor entero aleatorio de 1 a 6.
Dim MiValor MiValor = Int((6 * Rnd) + 1) ' Genera un valor aleatorio entre 1 y 6.

Round (Funcin)
Descripcin Devuelve un nmero redondeado en el nmero especificado de lugares decimales. Sintaxis Round(expresin [, nmLugaresDecimales]) La sintaxis de la funcin Round consta de las siguientes partes: Parte expresin Descripcin Requirido. La expresin numrica que se redondea.

nmLugaresDecimales

Opcional. Un nmero que indica cuntos lugares a la derecha del decimal se incluyen en el redondeo. Si se omite, la funcin Round devuelve enteros.

Second (Funcin)
Devuelve un valor de tipo Variant (Integer) que especifica un nmero entero entre 0 y 59, inclusive, que representa un segundo. Sintaxis Second(hora) El argumento hora es cualquier valor de tipo Variant, una expresin numrica, expresin de cadena o cualquier combinacin, que pueda representar una hora. Si hora contiene Null, la funcin devolver Null.

Ejemplo de la funcin Second


En este ejemplo se utiliza la funcin Second para obtener los segundos del minuto de una hora especificada. En el entorno de desarrollo, el literal de hora se presentar en formato abreviado, utilizando la configuracin regional del cdigo.
Dim MiTiempo, MiSegundo MiTiempo = #4:35:17 PM# ' Asigna una hora. MiSegundo = Second(MiTiempo) ' MiSegundo contiene 17.

Sgn (Funcin)
Devuelve un tipo Variant (Integer) que indica el signo de un nmero. Sintaxis Sgn(nmero) El argumento nmero puede ser cualquier expresin numrica vlida. Valores devueltos

Si nmero es Mayor que cero 1 Igual a cero 0

Sgn devuelve

Menor que cero -1

Ejemplo de la funcin Sgn


En este ejemplo se utiliza la funcin Sgn para determinar el signo de un nmero.
Dim MiVar1, MiVar2, MiVar3, MiSigno MiVar1 = 12: MiVar2 = -2.4: MiVar3 = 0 MiSigno = Sgn(MiVar1) ' Devuelve 1. MiSigno = Sgn(MiVar2) ' Devuelve -1. MiSigno = Sgn(MiVar3) ' Devuelve 0.

Shell (Funcin)
Ejecuta un programa ejecutable y devuelve un tipo Variant (Double) que representa la identificacin de la tarea del programa si se ha ejecutado con xito, en caso contrario devuelve cero. Sintaxis Shell(pathname[,windowstyle]) La sintaxis de la funcin Shell tiene estos argumentos con nombre: Parte pathname Descripcin Requerido; Variant (String). Nombre del programa a ejecutar y de cualesquiera argumentos necesarios o modificador de la lnea de comandos; puede incluir directorio o carpeta y unidad de disco. En Macintosh, puede utilizar la funcin MacID para especificar la firma de una aplicacin en lugar de su nombre. El siguiente ejemplo utiliza la firma de Microsoft Word:
Shell MacID("MSWD")

windowstyle

Opcional. Variant (Integer) correspondiente al estilo de la ventana en la cual se va a ejecutar el programa. Si se omite windowstyle, el programa se inicia minimizado con enfoque. En Macintosh (sistema 7.0 o posterior), windowstyle slo determina si la aplicacin recibe

el enfoque cuando se ejecuta.

El argumento con nombre windowstyle tiene estos valores: Constante vbHide 0 Valor Descripcin Se oculta Windows y se pasa el foco a la ventana oculta. La constante vbHide no se aplica a plataformas Macintosh. Windows recupera el foco y vuelve a su posicin y tamao original. Windows se muestra como un icono con foco. Windows se maximiza con foco. Windows vuelve al tamao y posicin ms recientes. La ventana activa actual permanece activa. Windows se muestra como un icono. La ventana activa actual permanece activa.

vbNormalFocus vbMinimizedFocus vbMaximizedFocus vbNormalNoFocus

1 2 3 4

vbMinimizedNoFocus

Comentarios Si la funcin Shell ejecuta con xito el archivo nombrado, devuelve la identificacin de la tarea (Id) del programa iniciado. La Id de la tarea es un nmero exclusivo que identifica el programa en ejecucin. Si la funcin Shell no puede iniciar el programa nombrado, ocurrir un error. En Macintosh, vbNormalFocus, vbMinimizedFocus y vbMaximizedFocus colocan la aplicacin en primer plano; sin embargo, vbHide, vbNoFocus, vbMinimizeFocus la colocan en segundo plano. Nota De manera predeterminada, la funcin Shell ejecuta otros programas de forma asncrona. Esto quiere decir que no se puede esperar que un programa iniciado con Shell termine su ejecucin antes de que se ejecuten las instrucciones que siguen a la funcin Shell en la aplicacin.

Ejemplo de la funcin Shell


En este ejemplo se utiliza la funcin Shell para ejecutar una aplicacin especificada por el usuario. En Macintosh, el nombre de unidad predeterminado es "Disco duro" y las partes de

la ruta de acceso se separan por dos puntos en vez de por barras diagonales inversas. Del mismo modo, se pueden especificar las carpetas de Macintosh en vez de \Windows.
' Si se especifica 1 como el segundo argumento, la aplicacin se ' ejecuta normalmente y recibe el enfoque. Dim RetVal RetVal = Shell("C:\WINDOWS\CALC.EXE", 1) ' Ejecuta Calculadora.

Space (Funcin)
Devuelve un tipo Variant (String) que consiste en un nmero especificado de espacios. Sintaxis Space(nmero) El argumento nmero es el nmero de espacios que se desea incluir en la cadena. Comentarios La funcin Space es til para dar formato a la salida y para borrar datos en cadenas de longitud fija.

Ejemplo de la funcin Space


En este ejemplo se utiliza la funcin Space para devolver una cadena que consta de un nmero especificado de espacios.
Dim MiCadena ' Devuelve una cadena con 10 espacios. MiCadena = Space(10) ' Inserta 10 espacios entre 2 cadenas. MiCadena = "Hola" & Space(10) & "Mundo"

Sqr (Funcin)
Devuelve un tipo Double que especifica la raz cuadrada de un nmero. Sintaxis

Sqr(nmero) El nmero argumento es un tipo Double o cualquier expresin numrica vlida mayor o igual a cero.

Ejemplo de la funcin Sqr


En este ejemplo se utiliza la funcin Sqr para calcular la raz cuadrada de un nmero.
Dim MiRaz MiRaz = Sqr(4) MiRaz = Sqr(23) MiRaz = Sqr(0) MiRaz = Sqr(-4) ' Devuelve 2. ' Devuelve 4.79583152331272. ' Devuelve 0. ' Genera un error en tiempo de ejecucin.

Str (Funcin)
Devuelve en un tipo Variant (String) la representacin de cadena de un nmero. Sintaxis Str(nmero) El argumento nmero necesario es un tipo Long que contiene una expresin numrica vlida. Comentarios Cuando los nmeros se convierten a cadenas, siempre se reserva un espacio a la izquierda para el signo del nmero. Si nmero es positivo, la cadena devuelta contiene un espacio a la izquierda y el signo ms se da por supuesto. Utilice la funcin Format para convertir valores numricos en valores con formato de fecha, hora, moneda o en otros formatos definidos por el usuario. A diferencia de Str, la funcin Format no incluye un espacio a la izquierda para el signo del nmero. Nota La funcin Str slo reconoce el punto (.) como separador decimal vlido. Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ejemplo, en aplicaciones internacionales), se debe utilizar CStr para convertir un nmero a una cadena.

Ejemplo de la funcin Str


En este ejemplo se utiliza Str para devolver una representacin de cadena de un nmero. Cuando un nmero se convierte en una cadena siempre se reserva un espacio a la izquierda para el signo.
Dim MiCadena MiCadena = Str(459) MiCadena = Str(-459.65) MiCadena = Str(459.001) ' Devuelve " 459". ' Devuelve "-459,65". ' Devuelve " 459,001".

StrComp (Funcin)
Devuelve un tipo Variant (Integer) que indica el resultado de una comparacin de cadena. Sintaxis StrComp(string1, string2[, compare]) La sintaxis de la funcin StrComp tiene estos argumentos con nombre: Parte string1 string2 compare Descripcin Requerido. Cualquier expresin de cadena vlida. Requerido. Cualquier expresin de cadena vlida. Opcional. Especifica el tipo de comparacin de cadena. Si el argumento compare es nulo el valor de Option Compare determina el tipo de comparacin.

Valores Los valores de la instruccin compare son los siguientes: Constante vbUseCompareOption vbBinaryCompare -1 0 Valor Descripcin Realiza una comparacin con los valores de la instruccin Option Compare. Realiza una comparacin binaria.

vbTextCompare vbDatabaseCompare

1 2

Realiza una comparacin textual. Slo para Microsoft Access. Realiza una comparacin basada en la informacin en las bases de datos.

Valores devueltos La funcin StrComp devuelve los siguientes valores: Si La funcin StrComp devuelve

string1 es menor que string2 -1 string1 es igual a string2 0

string1 es mayor que string2 1 string1 o string2 es Null Null

Ejemplo de la funcin StrComp


En este ejemplo se utiliza la funcin StrComp para devolver los resultados de una comparacin de cadenas. Si se suministra 1 como tercer argumento, se realiza una comparacin que no diferencia maysculas de minsculas, mientras que si el tercer argumento es 0 o se omite, se realiza una comparacin binaria.
Dim MiCadena1, MiCadena2, MiComp MiCadena1 = "ABCD": MiCadena2 = "abcd" ' Define las variables. MiComp = StrComp(MiCadena1, MiCadena2, 1)' Devuelve 0. MiComp = StrComp(MiCadena1, MiCadena2, 0)' Devuelve -1. MiComp = StrComp(MiCadena2, MiCadena1) ' Devuelve 1.

StrReverse (Funcin)
Descripcin Devuelve una cadena en la que se invierte el orden de carcter de una cadena especificada. Sintaxis

StrReverse(cadena1) El argumento cadena1 es la cadena cuyos caracteres se invierten. Si cadena1 es una cadena de longitud cero (""), se devuelve una cadena de longitud cero. Si es Null, se produce un error. Ejemplo: CC=strreverse(UNOS) devuelve SONU

String (Funcin)
Devuelve un tipo Variant (String) que contiene una cadena de caracteres que se repite de la longitud especificada. Sintaxis String(number, character) La sintaxis de la funcin String tiene estos argumentos con nombre: Parte number character Descripcin Requerido; un tipo Long. Longitud de la cadena devuelta. Si nmero contiene Null, se devuelve Null. Requerido; un tipo Variant. Cdigo de carcter que especifica el carcter o la expresin de cadena cuyo primer carcter se utiliza para construir la cadena devuelta. Si character contiene Null, se devuelve Null.

Comentarios Si se especifica para character un nmero mayor que 255, String convierte el nmero en un cdigo de carcter vlido utilizando la frmula: character Mod 256

Ejemplo de la funcin String


En este ejemplo se utiliza la funcin String para devolver cadenas de caracteres de una longitud especificada, que se repiten.

Dim MiCadena MiCadena = String(5, "*") MiCadena = String(5, 64) MiCadena = String(10, "ABC")

' Devuelve "*****". ' Devuelve "@@@@@". ' Devuelve "AAAAAAAAAA".

Switch (Funcin)
Evala una lista de expresiones y devuelve un valor Variant o una expresin asociada a la primera instruccin de la lista que da como resultado True. Sintaxis Switch(expresin-1, valor-1[, expresin-2, valor-2 [, expresin-n,valor-n]]) La sintaxis de la funcin Switch consta de las siguientes partes: Parte expresin valor Descripcin Requerido. Expresin del tipo Variant que se desea evaluar. Requerido. Valor o expresin que se devuelve si la expresin correspondiente da como resultado True.

Comentarios La lista de argumentos de la funcin Swicht est formada por pares de expresiones y valores. Las expresiones se evalan segn aparecen en la lista, de izquierda a derecha y se devuelve el valor asociado a la primera expresin que al evaluarse da True. Si las partes no estn emparejadas correctamente, se producir un error en tiempo de ejecucin. Por ejemplo, si expresin-1 da True, Switch devolver valor-1. Si expresin-1 da False, pero expresin-2 da True, Switch devolver valor-2 y as sucesivamente. Switch devolver un valor Null si:

Ninguna de las expresiones da True. La primera expresin que da True tiene asociado un valor Null.

Switch evala todas las expresiones, aunque solamente devuelve una de ellas. Por esta razn, deber vigilar que no se produzcan efectos no deseados. Por ejemplo, si en la evaluacin de una expresin hay una divisin por cero, se producir un error.

Ejemplo de la funcin Switch


Este ejemplo utiliza la funcin Switch para devolver el nombre de un idioma que coincide con el nombre de una ciudad.
Function MatchUp (NombreCiudad As String) Matchup = Switch(NombreCiudad = "Londres", "Ingls", NombreCiudad _ = "Roma", "Italiano", NombreCiudad = "Pars", "Francs") End Function

Time (Funcin)
Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema. Sintaxis Time Comentarios Use la instruccin Time para establecer la hora del sistema.

Timer (Funcin)
Devuelve un tipo Single que representa el nmero de segundos transcurridos desde la medianoche. Sintaxis Timer

Ejemplo de la funcin Timer


En este ejemplo se utiliza la funcin Timer para detener la aplicacin. El ejemplo tambin utiliza DoEvents para pasar el control a otros procesos durante la pausa.
Dim TiempoPausa, Inicio, Final, TiempoTotal

If (MsgBox("Presione S para parar 5 segundos", 4)) = vbYes Then TiempoPausa = 5 ' Asigna hora de inicio. Inicio = Timer ' Establece la hora de inicio. Do While Timer < Inicio + TiempoPausa DoEvents ' Cambia a otros procesos. Loop Final = Time ' Asigna hora de finalizacin. TiempoTotal = Final - Inicio ' Calcula tiempo total. MsgBox "Detenida durante " & TiempoTotal & " segundos" Else End End If

TimeSerial (Funcin)
Devuelve un tipo Variant (Date) que contiene la hora actual para una hora, minuto y segundo especficos. Sintaxis TimeSerial(hora, minuto, segundo) La sintaxis de la funcin TimeSerial consta de los siguientes argumentos con nombre: Parte hora minuto segundo Descripcin Requerido; Variant (Integer). Nmero entre 0 (12:00 a.m.) y 23 (11:00 p.m.), inclusive o una expresin numrica. Requerido; Variant (Integer). Cualquier expresin numrica. Requerido; Variant (Integer). Cualquier expresin numrica.

Comentarios Para especificar una hora, como 11:59:59, el intervalo de nmeros para cada argumento de TimeSerial debera estar en el intervalo normalmente aceptado para la unidad; es decir, 0 23 para horas y 059 para minutos y segundos. Sin embargo, puede especificar horas relativas para cada argumento, usando cualquier expresin numrica que represente algunas horas, minutos o segundos antes o despus de cierta hora. El ejemplo siguiente usa expresiones en lugar de nmeros de hora absoluta. La funcin TimeSerial devuelve una hora que es 15 (-15) minutos menos que seis horas antes del medioda (12 - 6), 5:45:00 a.m.

TimeSerial(12 - 6, -15, 0)

Cuando algn argumento supera el intervalo normalmente aceptado para l, se incrementa hasta la siguiente unidad mayor. Por ejemplo, si especifica 75 minutos, se evala como una hora y 15 minutos. No obstante, si un solo argumento est fuera del intervalo -32.768 a 32.767 o si la hora especificada por los tres argumentos, directamente o mediante expresin, hace que la fecha quede fuera del intervalo aceptable de valores, se produce un error.

Ejemplo de la funcin TimeSerial


En este ejemplo se utiliza la funcin TimeSerial para devolver la hora correspondiente a una hora, minuto y segundo especificados.
Dim MiTiempo MiTiempo = TimeSerial(16, 35, 17) ' correspondiente a 4:35:17 PM. ' MiTiempo contiene la hora

TimeValue (Funcin)
Devuelve un tipo Variant (Date) que contiene la hora. Sintaxis TimeValue(hora) El argumento hora es normalmente una expresin de cadena que representa una hora desde las 0:00:00 (12:00:00 a.m.) a las 23:59:59 (11:59:59 p.m.), inclusive. Sin embargo, hora tambin puede ser cualquier expresin que pueda representar una hora en ese intervalo. Si hora contiene Null, la funcin devolver Null. Comentarios Puede introducir horas vlidas usando un reloj de 12 horas o de 24 horas. Por ejemplo, "2:24 p.m." y "14:24" son argumentos vlidos de hora. Si el argumento hora contiene informacin de fecha, TimeValue no devuelve esta informacin. Sin embargo, si hora incluye informacin no vlida de fecha, ocurrir un error.

Ejemplo de la funcin TimeValue


En este ejemplo se utiliza la funcin TimeValue para convertir una cadena de caracteres a hora. Tambin puede utilizar literales de fecha para asignar directamente una hora a una variable Variant o Date variable, por ejemplo, MiHora = #4:35:17 PM#.
Dim MiHora MiHora = TimeValue("4:35:17 PM") ' Devuelve la hora.

TypeName (Funcin)
Devuelve una cadena (String) que proporciona informacin acerca de una variable. Sintaxis TypeName(nombrevariable) El argumento nombrevariable requerido, es un tipo de datos Variant que contiene cualquier variable excepto una variable de un tipo definido por el usuario. Comentarios La cadena devuelta por la funcin TypeName puede ser cualquiera de las siguientes: Cadena devuelta tipo de objeto Byte Integer Long Single Double Currency Decimal Date String La variable contiene Un objeto cuyo tipo es tipoobjeto Un valor byte Un entero Un entero largo Un nmero de punto flotante de precisin simple Un nmero de punto flotante de precisin doble Un valor de moneda Un valor decimal Un valor fecha Una cadena

Boolean Error Empty Null Object Desconocido Nothing

Un valor booleano Un valor de error No inicializado Datos no vlidos Un objeto Un objeto cuyo tipo es desconocido Una variable de que no hace referencia a un objeto

Si nombrevariable es una matriz, la cadena devuelta puede ser cualquiera de las posibles (o Variant) con un parntesis vaco aadido. Por ejemplo, si nombrevariable es una matriz de nmeros enteros, la funcin TypeName devuelve "Integer()".

Ejemplo de la funcin TypeName


En este ejemplo se utiliza la funcin TypeName para devolver informacin acerca de una variable.
' Declara variables. Dim VarNull, MiTipo, VarCad As String, VarEnt As Integer, VarMon As Currency Dim VarMatriz (1 To 5) As Integer VarNull = Null ' Asigna un valor Null. MiTipo = TypeName(VarCad) ' Devuelve "String". MiTipo = TypeName(VarEnt) ' Devuelve "Integer". MiTipo = TypeName(VarMon) ' Devuelve "Currency". MiTipo = TypeName(VarNull) ' Devuelve "Null". MiTipo = TypeName(VarMatriz) ' Devuelve "Integer()".

UCase (Funcin)
Devuelve un tipo Variant (String) que contiene una cadena especificada que se ha convertido a maysculas. Sintaxis UCase(cadena)

El argumento cadena necesario es cualquier expresin de cadena vlida. Si cadena contiene Null, se devuelve Null. Comentarios Slo se convierten a maysculas las letras minsculas. Las letras maysculas o los caracteres que no son letras no sufren cambios.

Ejemplo de la funcin UCase


En este ejemplo se utiliza la funcin UCase para devolver la versin en maysculas de una cadena.
Dim LowerCase, UpperCase LowerCase = "Hola Mundo 1234" UpperCase = UCase(LowerCase) ' Cadena a convertir. ' Devuelve "HOLA MUNDO 1234".

Val (Funcin)
Devuelve los nmeros contenidos en una cadena como un valor numrico del tipo adecuado. Sintaxis Val(cadena) El argumento obligatorio cadena es cualquier expresin de cadena vlida. Comentarios La funcin Val deja de leer la cadena en el primer carcter que no puede reconocer como parte de un nmero. Los smbolos y caracteres que se consideran a menudo parte de valores numricos, como signos de moneda y comas, no se reconocen. Sin embargo, la funcin reconoce los prefijos de base &O (para octal) y &H (para hexadecimal). Los espacios en blanco, los tabuladores y los avances de lnea se eliminan del argumento. Lo siguiente devuelve el valor 1615198:
Val(" 1615 198 Calle N.E.")

En el cdigo que se muestra a continuacin, Val devuelve el valor decimal -1 correspondiente al valor hexadecimal entre parntesis:

Val("&HFFFF")

Nota La funcin Val slo reconoce el punto (.) como separador decimal vlido. Cuando se utilizan separadores decimales diferentes, como en aplicaciones internacionales, debe utilizar CDbl para convertir una cadena a un nmero.

Ejemplo de la funcin Val


En este ejemplo se utiliza la funcin Val para devolver los nmeros contenidos en una cadena.
Dim MiValor MiValor = Val("2457") MiValor = Val(" 2 45 7") MiValor = Val("24 y 57") ' Devuelve 2457. ' Devuelve 2457. ' Devuelve 24.

Weekday (Funcin)
Devuelve un valor de tipo Variant (Integer) que contiene un nmero entero que representa el da de la semana. Sintaxis Weekday(fecha, [primerdasemana]) La sintaxis de la funcin Weekday consta de los siguientes argumentos con nombre: Parte fecha Descripcin Requerido. Variant, expresin numrica, expresin de cadena o cualquier combinacin que puede representar una fecha. Si fecha contiene Null, la funcin devolver Null. Opcional. Una constante que especifica el primer da de la semana. Si no se especifica, se asume el valor vbSunday.

primerdasemana

Valores El argumento primerdasemana tiene estos valores: Constante Valor Descripcin

vbUseSystem vbSunday vbMonday vbTuesday vbWednesday vbThursday vbFriday vbSaturday

0 1 2 3 4 5 6 7

Utilice configuracin de la API de NLS. Domingo (predeterminado) Lunes Martes Mircoles Jueves Viernes Sbado

Valores devueltos La funcin Weekday puede devolver cualquiera de estos valores: Constante vbSunday vbMonday vbTuesday Valor 1 2 3 Domingo Lunes Martes Mircoles Jueves Viernes Sbado Descripcin

vbWednesday 4 vbThursday vbFriday vbSaturday 5 6 7

Ejemplo de la funcin Weekday


En este ejemplo se utiliza la funcin Weekday para obtener el da de la semana de una fecha especificada.
Dim MiFecha, MiDaSemana MiFecha = #12 febrero 1969# MiDaSemana = Weekday(MiFecha) ' MiFecha es un mircoles. ' Asigna una fecha. ' MiDaSemana contiene 4 ya que

WeekdayName (Funcin)
Descripcin Devuelve una cadena que indica el da de la semana especificado. Sintaxis WeekdayName(daDeLaSemana, abreviar, primerDaDeLaSemana) La sintaxis de la funcin WeekdayName consta de las siguientes partes: Parte daDeLaSemana Descripcin Requerido. La designacin numrica para el da de la semana. El valor numrico de cada da depende de la configuracin del valor primerDaDeLaSemana. Opcional. Un valor Boolean que indica si se abrevia el nombre del da de la semana. Si se omite, el valor predeterminado es False, que significa que el nombre del da de la semana no se abrevia. Opcional. Un valor numrico que indica el primer da de la semana. Vea la seccin Valores para consultar los valores posibles.

abreviar

primerDaDeLaSemana

Valores El argumento primerDaDeLaSemana puede tener los valores siguientes: Constante vbUseSystem vbSunday vbMonday vbTuesday vbWednesday 0 1 2 3 4 Valor Descripcin Utilizar la configuracin de la API National Language Support (NLS). Domingo (predeterminado). Lunes. Martes. Mircoles.

vbThursday vbFriday vbSaturday

5 6 7

Jueves. Viernes. Sbado.

Year (Funcin)
Devuelve un valor de tipo Variant (Integer) que contiene un nmero entero que representa el ao. Sintaxis Year(fecha) El argumento fecha es cualquier valor de tipo Variant, expresin numrica, expresin de cadena o cualquier combinacin que puede representar una fecha. Si fecha contiene Null, la funcin devolver Null.

Ejemplo de la funcin Year


En este ejemplo se utiliza la funcin Year para obtener el ao de una fecha especificada. En el entorno de desarrollo, la hora(literal de fecha), se presentar en formato abreviado, utilizando la configuracin regional del cdigo.
Dim MiFecha, MiAo MiFecha = #12 febrero 1969#' Asigna una fecha. MiAo = Year(MiFecha) ' MiAo contiene 1969.

Funciones matemticas
Abs (Funcin) Atn (Funcin) Cos (Funcin) Exp (Funcin) Fix (Funcin)

Int (Funcin) Log (Funcin) Rnd (Funcin) Sgn (Funcin) Sin (Funcin) Sqr (Funcin) Tan (Funcin)

Funciones matemticas derivadas


La siguiente es una lista de funciones matemticas no intrnsecas que pueden derivarse de funciones matemticas intrnsecas: Funcin Secante Cosecante Cotangente Seno inverso Coseno inverso Secante inversa Cosecante inversa Cotangente inversa Seno hiperblico Coseno hiperblico Tangente hiperblica Secante hiperblica Derivadas equivalentes Sec(X) = 1 / Cos(X) Cosec(X) = 1 / Sin(X) Cotan(X) = 1 / Tan(X) Arcsin(X) = Atn(X / Sqr(-X * X + 1)) Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) Arcsec(X) = Atn(X / Sqr(X * X 1)) + Sgn((X) 1) * (2 * Atn(1)) Arccosec(X) = Atn(X / Sqr(X * X 1)) + (Sgn(X) 1) * (2 * Atn(1)) Arccotan(X) = Atn(X) + 2 * Atn(1) HSin(X) = (Exp(X) Exp(X)) / 2 HCos(X) = (Exp(X) + Exp(X)) / 2 HTan(X) = (Exp(X) Exp(X)) / (Exp(X) + Exp(X)) HSec(X) = 2 / (Exp(X) + Exp(X))

Cosecante hiperblica Cotangente hiperblica Seno hiperblico inverso Coseno hiperblico inverso Tangente hiperblica inversa Secante hiperblica inversa

HCosec(X) = 2 / (Exp(X) Exp(X)) HCotan(X) = (Exp(X) + Exp(X)) / (Exp(X) Exp(X)) HArcsin(X) = Log(X + Sqr(X * X + 1)) HArccos(X) = Log(X + Sqr(X * X 1)) HArctan(X) = Log((1 + X) / (1 X)) / 2 HArcsec(X) = Log((Sqr(X * X + 1) + 1) / X)

Cosecante hiperblica inversa HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X) Cotangente hiperblica inversa Logaritmo en base N HArccotan(X) = Log((X + 1) / (X 1)) / 2 LogN(X) = Log(X) / Log(N)

Operadores aritmticos
^ (operador) * (operador) / (operador) \ (operador) Mod (operador) + (operador) - (operador)

\ (Operador)
Se utiliza para dividir dos nmeros y obtener un resultado entero. Sintaxis resultado = nmero1\nmero2

La sintaxis del operador \ consta de las siguientes partes: Parte Descripcin

resultado Requerido; cualquier variable numrica. nmero1 Requerido; cualquier expresin numrica. nmero2 Requerido; cualquier expresin numrica.

Comentarios Antes de efectuar la divisin se redondean las expresiones numricas para convertirlas en expresiones tipo Byte, Integer o Long. Normalmente, el tipo de dato del resultado es tipo Byte, Byte tipo variant, tipo Integer o Integer tipo variant, tipo Long o Long tipo variant, independientemente de si el resultado es un nmero entero o no. La parte fraccionaria se trunca. Sin embargo, si cualquiera de las expresiones es Null, resultado es Null. Toda expresin que sea Empty se considera como 0.

Ejemplo del operador \


En estos ejemplos se utiliza el operador \ para ejecutar divisiones de enteros.
Dim MiValor MiValor = 11 \ 4 MiValor = 9 \ 3 MiValor = 100 \ 3 ' Devuelve 2. ' Devuelve 3. ' Devuelve 33.

+ (Operador)
Se utiliza para sumar dos nmeros. Sintaxis resultado = expresin1+expresin2 La sintaxis del operador + consta de las siguientes partes: Parte resultado Descripcin Requerido; cualquier variable numrica.

Expresin1 Requerido; cualquier expresin. expresin2 Requerido; cualquier expresin.

Comentarios Cuando utilice el operador + , quiz no pueda determinar si se va a realizar una suma o una concatenacin de cadenas. Utilice el operador & para la concatenacin, de modo que se eviten ambigedades y se suministren programas claros y explcitos. Si hay al menos una expresin que no sea de tipo Variant, se aplican las siguientes reglas: Si Ambas expresiones son tipos de datos numricos (Byte, Boolean, Integer, Long, Single, Double, Date, Currency o Decimal) Ambas expresiones son del tipo String Suma. Entonces

Concatenacin.

Una expresin es de un tipo de datos numrico Suma. y la otra cualquier tipo Variant excepto Null Una expresin es del tipo String y la otra cualquier tipo Variant excepto Null Una expresin es del tipo Empty Variant Concatenacin. Devuelve sin modificaciones la expresin restante como resultado.

Una expresin es de un tipo de datos numrico Puede ocurrir un Error de tipos. y la otra de tipo String Cualquiera de las expresiones es Null resultado es Null.

Si ambas expresiones son del tipo Variant, se aplican las siguiente reglas: Si Ambas expresiones tipo Variant son numricas Ambas expresiones tipo Variant son cadenas de caracteres Una expresin tipo Variant es numrica y la otra es una cadena de caracteres Suma. Concatenacin. Suma. Entonces

En adiciones aritmticas simples de expresiones de tipos de datos numricos nicamente, el tipo de dato de resultado es habitualmente el mismo que el de la expresin con mayor precisin. El orden de precisin, de menos exacto a ms exacto, es Byte, Integer, Long, Single, Double, Currency y Decimal. Esta regla tiene las siguientes excepciones: Si Se suman un tipo Single y un tipo Long, El tipo de dato de resultado es Long, Single o Date tipo variant que desborda su intervalo vlido, El tipo de dato de resultado es un Byte tipo variant que se sale del intervalo vlido, El tipo de dato de resultado es un Integer tipo variant que se sale del intervalo vlido, Un Date se agrega a cualquier tipo de dato, El resultado es un tipo Double. se convierte a un Double tipo variant.

se convierte a un Integer tipo variant. se convierte a un Long tipo variant. un tipo Date.

Si una de las expresiones o ambas son expresiones de tipo Null, resultado es Null. Si ambas expresiones son Empty, el resultado es Integer. Sin embargo, slo una de las expresiones es Empty, se devuelve la otra sin modificaciones como resultado. Nota El orden de precisin utilizado por la suma y la resta no es igual que el orden de precisin utilizado por la multiplicacin.

Ejemplo del operador +


En estos ejemplos se utiliza el operador + para sumar nmeros. El operador + puede utilizarse tambin para concatenar cadenas de caracteres pero, para evitar ambigedades, es mejor utilizar para ello el operador &. Si los componentes de una expresin creada con el operador + incluyen tanto cadenas como elementos numricos, se asigna el resultado aritmtico. Si los componentes son cadenas exclusivamente, se concatenan las cadenas.
Dim MiNmero, Var1, Var2 MiNmero = 2 + 2 MiNmero = 4257.04 + 98112 Var1 = "34": Var2 = 6 MiNmero = Var1 + Var2 Var1 = "34": Var2 = "6" MiNmero = Var1 + Var2 cadenas). ' Devuelve 4. ' Devuelve 102369.04. ' Inicializa variables mezcladas. ' Devuelve 40. ' Inicializa las variables con cadenas. ' Devuelve "346" (concatenacin de

Like (Operador)
Se utiliza para comparar dos cadenas de caracteres. Sintaxis resultado = cadena Like patrn La sintaxis del operador Like consta de las siguientes partes: Parte resultado cadena patrn Descripcin Requerido; cualquier variable numrica. Requerido; cualquier expresin de cadena. Requerido; cualquier expresin de cadena que satisface las convenciones de coincidencia de patrones descritas en Comentarios.

Comentarios Si cadena coincide con patrn, el resultado es True; si no coincide, el resultado es False. Si cadena o patrn es Null, el resultado es tambin Null. El comportamiento del operador Like depende de la instruccin Option Compare. El mtodo predeterminado de comparacin de cadenas para cada mdulo es Option Compare Binary. Option Compare Binary da como resultado comparaciones de cadenas basadas en el orden derivado de las representaciones binarias internas de los caracteres. En Microsoft Windows, el orden depende de la pgina de cdigo. En el siguiente ejemplo se ilustra un orden binaria tpico: A<B<E<Z<a<b<e<z<<<<<< Option Compare Text da como resultado comparaciones de cadenas basadas en el orden determinado por la configuracin regional de su sistema. Los mismos caracteres del ejemplo anterior, ordenados con la opcin Option Compare Text, aparecen en el siguiente orden: (A=a) < (=) < (B=b) < (E=e) < (=) < (Z=z) < (=)

La funcin integrada de bsqueda de coincidencia de patrones ofrece una herramienta verstil para efectuar comparaciones de cadenas. Las caractersticas de esta funcin permiten el empleo de caracteres comodn, listas de caracteres o intervalos de caracteres en cualquier combinacin para hallar coincidencias en cadenas. En la siguiente tabla se indican los caracteres que se pueden poner en patrn y con qu coinciden los mismos: Caracteres en pattern ? * # [listacaracteres] [!listacaracteres] Coincidencias en string Un carcter cualquiera. Cero o ms caracteres. Un dgito cualquiera (09). Un carcter cualquiera de listacaracteres. Un carcter cualquiera no incluido en listacaracteres.

Se puede utilizar un grupo de uno o ms caracteres (listacaracteres) entre corchetes ([ ]) para establecer una coincidencia con un carcter cualquiera de cadena; el grupo puede incluir casi cualquier cdigo de carcter, incluyendo dgitos. Nota Los caracteres especiales corchete de apertura ([), interrogacin (?), signo de nmero (#) y asterisco (*) se pueden utilizar para establecer una coincidencia con s mismos slo si van entre corchetes. El corchete de cierre (]) no se puede utilizar en un grupo para establecer una coincidencia con s mismo, pero s se puede utilizar fuera de un grupo, como carcter independiente. Puede especificar un intervalo de caracteres en listacaracteres colocando un guin () para separar los lmites inferior y superior del intervalo. Por ejemplo, la secuencia [AZ] en patrn permite hallar una coincidencia si en la posicin correspondiente de cadena hay un carcter en maysculas cualquiera, comprendido en el intervalo de la A a la Z. Se pueden incluir mltiples intervalos entre corchetes, sin necesidad de delimitadores. El significado del intervalo especificado depende de la ordenacin de caracteres vlida en tiempo de ejecucin (determinado por Option Compare y la configuracin regional del sistema dnde est ejecutndose el cdigo). Si se utiliza el ejemplo con Option Compare Binary, en el intervalo [AE] coinciden A, B y E. Con Option Compare Text, en [AE] coinciden A, a, , , B, b, E, e. y no se incluyen entre las coincidencias porque los caracteres acentuados se encuentran despus de los no acentuados en el orden. Otras reglas importantes para efectuar coincidencias de patrones son las siguientes:

Una exclamacin (!) al comienzo de listacaracteres significa que hay coincidencias, dentro de la cadena para cualquier carcter excepto los incluidos en listacaracteres. Si no se encierra entre corchetes, la exclamacin coincide consigo misma. El guin () puede aparecer tanto al comienzo (despus de la exclamacin, si se emplea) o al final de listacaracteres para coincidir consigo mismo. En cualquier otro lugar, el guin slo se puede utilizar para identificar un intervalo de caracteres. Cuando se especifica un intervalo de caracteres, stos deben aparecer en orden ascendente (de menor a mayor).[A-Z] es un patrn vlido, pero [Z-A] no lo es. La secuencia de caracteres [] se considera una cadena de caracteres de longitud cero ("").

El alfabeto de algunos idiomas incluye caracteres especiales que en realidad representan dos caracteres distintos. Por ejemplo, varios idiomas emplean el carcter "" para representar los caracteres "a" y "e" cuando aparecen juntos. El operador Like reconoce que el carcter especial nico y los dos caracteres individuales son equivalentes. Cuando se especifica en la configuracin regional del sistema un idioma que utiliza uno de estos caracteres especiales, al ocurrir el carcter especial en patrn o cadena, coincide con la secuencia equivalente de 2 caracteres en la otra cadena. Igualmente, un nico carcter especial en patrn incluido entre corchetes (en solitario, en una lista o en un intervalo) coincide con la secuencia de 2 caracteres equivalente en cadena.

Ejemplo del operador Like


En estos ejemplos se utiliza el operador Like para ejecutar una exclusin lgica sobre dos expresiones.
Dim MiPrueba MiPrueba = "aBBBa" Like "a*a" ' Devuelve True. MiPrueba = "F" Like "[A-Z]" ' Devuelve True. MiPrueba = "F" Like "[!A-Z]" ' Devuelve False. MiPrueba = "a2a" Like "a#a" ' Devuelve True. MiPrueba = "aM5b" Like "a[L-P]#[!c-e]" ' Devuelve True. MiPrueba = "BAT123khg" Like "B?T*" ' Devuelve True. MiPrueba = "CAT123khg" Like "B?T*" ' Devuelve False.

Mod (Operador)
Divide dos nmeros y devuelve slo el resto. Sintaxis

resultado = nmero1 Mod nmero2 La sintaxis del operador Mod consta de las siguientes partes: Parte Descripcin

resultado Requerido; cualquier variable numrica. nmero1 Requerido; cualquier expresin numrica. nmero2 Requerido; cualquier expresin numrica.

Comentarios El operador de mdulo, o resto, divide nmero1 por nmero2 (redondeando a enteros los nmeros de signo flotante) y devuelve slo el resto como resultado. Por ejemplo, en la siguiente expresin, A (que es el resultado) es igual a 5.
A = 19 Mod 6.7

Generalmente, el tipo de dato de resultado es tipo Byte, Byte tipo variant, tipo Integer, Integer tipo variant, tipo Long o tipo Variant que contiene un tipo Long, independientemente de si el resultado es un nmero entero o no. La parte fraccionaria se trunca. Sin embargo, si cualquiera de las expresiones es Null, el resultado es tambin Null. Toda expresin Empty se considera como 0.

Ejemplo del operador Mod


En estos ejemplos se utiliza el operador Mod para dividir dos nmeros y obtener como resultado slo el resto de la divisin. Si uno de los nmeros es de coma flotante, se redondea primero para convertirlo en un entero.
Dim MiResultado MiResultado = 10 Mod 5 MiResultado = 10 Mod 3 MiResultado = 12 Mod 4.3 MiResultado = 12.6 Mod 5 ' Devuelve 0. ' Devuelve 1. ' Devuelve 0. ' Devuelve 3.

Prioridad de los operadores


Cuando hay varias operaciones en una misma expresin, cada parte de la misma se evala y se resuelve en un orden predeterminado segn la prioridad de los operadores.

Cuando hay expresiones que contienen operadores de ms de una categora, se resuelven antes las que tienen operadores aritmticos, a continuacin las que tienen operadores de comparacin y por ltimo las de operadores lgicos. Los operadores de comparacin tienen todos la misma prioridad; es decir, se evalan de izquierda a derecha, en el orden en que aparecen. Los operadores lgicos y aritmticos se evalan en el siguiente orden de prioridad: Aritmticos Exponenciacin (^) Negacin () Multiplicacin y divisin (*, /) Divisin de enteros (\) Mdulo aritmtico (Mod) Adicin y substraccin (+, ) Concatenacin de cadenas (&) Comparacin Igualdad (=) Desigualdad (<>) Menor que (<) Mayor que (>) Menor o igual que (<=) Mayor o igual que (>=) Like Is Not And Or Xor Eqv Imp Lgicos

Cuando hay multiplicacin y divisin en la misma expresin, cada operacin se evala a medida que aparece, de izquierda a derecha. Del mismo modo, cuando se presentan adiciones y substracciones en una misma expresin, cada operacin se evala tal como aparecen de izquierda a derecha. Es posible usar parntesis para saltar el orden de preferencia y forzar que algunas partes de una expresin se evalen antes que otras. Las operaciones entre parntesis se realizan antes que las de fuera. Sin embargo, dentro de los parntesis, la precedencia de los operadores se mantiene. El operador de concatenacin de cadenas (&) no es realmente un operador aritmtico, pero en orden de prioridad se encuentra a continuacin de todos los operadores aritmticos y antes que todos los operadores de comparacin. El operador Like, a pesar de tener la misma prioridad que los operadores de comparacin, es en realidad un operador de coincidencia de patrones. El operador Is es un operador de comparacin de referencia de objetos. No compara objetos ni valores de objetos; slo determina si dos referencias de objeto se refieren al mismo objeto.

Resumen de tipos de datos


La tabla siguiente muestra los tipos de datos compatibles, incluyendo el tamao de almacenamiento y el intervalo. Tipo de datos Byte Boolean Integer Long (entero largo) Single (coma flotante/ precisin simple) Double (coma flotante/ precisin doble) Tamao de almacenamiento 1 byte 2 bytes 2 bytes 4 bytes 4 bytes 0 a 255 True o False -32,768 a 32,767 -2,147,483,648 a 2,147,483,647 -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; +/-7,9228162514264337593543950335 con 28 posiciones a la derecha del signo decimal; el nmero ms pequeo distinto de cero es +/-0,0000000000000000000000000001 1 de enero de 100 a 31 de diciembre de 9999 Cualquier referencia a tipo Object Desde 0 a 2.000 millones Intervalo

8 bytes

Currency (entero a escala) Decimal

8 bytes 14 bytes

Date Object String (longitud variable)

8 bytes 4 bytes 10 bytes + longitud de la cadena

String (longitud fija) Variant (con nmeros) Variant (con caracteres) Definido por el usuario (utilizando Type)

Longitud de la cadena 16 bytes 22 bytes + longitud de la cadena Nmero requerido por los elementos

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.

Nota Las matrices de cualquier tipo de datos requieren 20 bytes de memoria ms cuatro bytes para cada dimensin de matriz, ms el nmero de bytes que ocupan los propios datos. Puede calcular la memoria que ocupan los datos multiplicando el nmero de elementos de datos por el tamao de cada elemento. Por ejemplo, los datos de una matriz unidimensional que consten de cuatro elementos de datos tipo Integer de dos bytes cada uno, ocupan ocho bytes. Los ocho bytes que requieren los datos ms los 24 bytes necesarios para la matriz suman un requisito total de memoria de 32 bytes para dicha matriz. Un tipo Variant que contiene una matiz requiere 12 bytes ms que la matriz por s sola. Note Use the StrConv function to convert one type of string data to another.

GoTo (Instruccin)
Salta incondicionalmente a una lnea especificada en un procedimiento. Sintaxis GoTo lnea El argumento lnea puede ser cualquier etiqueta de lnea o nmero de lnea. Comentarios GoTo solamente puede saltar a lneas del procedimiento en el que aparece. Nota 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).

Ejemplo de la instruccin GoTo


En este ejemplo se utiliza la instruccin GoTo para saltar a etiquetas de lnea ubicadas dentro de un procedimiento.
Sub GotoStatementDemo() Dim Nmero, MiCadena Nmero = 1 ' Inicializa la variable. ' Evala Nmero y salta al rtulo apropiado. If Nmero = 1 Then GoTo Line1 Else GoTo Line2 Line1: MiCadena = "Nmero es igual a 1" GoTo LastLine ' Va a la ltima linea. Line2: ' La siguiente instruccin nunca se ejecuta. MiCadena = "Nmero igual a 2" LastLine: Debug.Print MiCadena ' Imprime "Nmero es igual a 1" en la ' ventana Inmediato End Sub

Kill (Instruccin)
Elimina archivos del disco. Sintaxis

Kill nombre_ruta El argumento requerido nombre_ruta es una expresin de cadena que especifica uno o ms nombres de archivos que se van a eliminar. Puede incluir el directorio o carpeta y la unidad de disco. Comentarios En Microsoft Windows, La funcin Kill permite el uso de los caracteres comodn '*' (mltiples caracteres) y '?' (un solo carcter) para especificar varios archivos. Sin embargo, en Macintosh, estos caracteres son tratados como caracteres de nombre de archivo vlidos y no se pueden utilizar como comodines para especificar mltiples nombres de archivo.

Ejemplo de la instruccin Kill


En este ejemplo se utiliza la instruccin Kill para borrar un archivo de un disco.
' Se Kill ' Se Kill supone que PRUEBA es un archivo que contiene informacin. "PRUEBA" ' Se elimina el archivo. eliminan todos los archivos *.TXT del directorio actual. "*.TXT"

Function (Instruccin)
Declara el nombre, los argumentos y el cdigo que componen el cuerpo de un procedimiento Function. Sintaxis [Public | Private | Friend] [Static] Function nombre [(lista_argumentos)] [As tipo] [instrucciones] [nombre = expresin] [Exit Function] [instrucciones] [nombre = expresin] End Function La sintaxis de la instruccin Function consta de las siguientes partes: Parte Public Descripcin Opcional. Indica que el procedimiento Function es accesible para todos los dems procedimientos de todos los mdulos. Si se utiliza en un mdulo que contiene Option Private, el procedimiento no estar disponible fuera del proyecto. Opcional. Indica que el procedimiento Function slo es accesible para otros procedimientos del mdulo donde se declara. Opcional. Se utiliza solamente en un mdulo de clase. Indica que el procedimiento Function es visible a travs del proyecto, pero no es visible para un controlador de una instancia de un objeto. Opcional. Indica que las variables locales del procedimiento Function se conservan entre las distintas llamadas. El atributo Static no afecta a las variables que se declaran fuera de Function, incluso aunque se utilicen en el procedimiento. Requerido. Nombre del procedimiento Function; sigue las convenciones estndar de nombres de variables. Opcional. Lista de variables que representan argumentos que se pasan al procedimiento Function cuando se llama. La variables mltiples se separan por comas. Opcional. Tipo de datos del valor devuelto por el procedimiento Function; puede ser Byte, Boolean, Integer, Long, Currency, Single,

Private Friend

Static

Nombre lista_ argumentos tipo

Double, Decimal (no admitido actualmente), Date, String, o (excepto longitud fija), Object, Variant, o cualquier tipo definido por el usuario. instrucciones expresin Opcional. Cualquier grupo de instrucciones que se van a ejecutar dentro del procedimiento Function. Opcional. Valor de retorno de Function.

El argumento lista_argumentos tiene la siguiente sintaxis y partes: [Optional] [ByVal | ByRef] [ParamArray] nombre_variable[( )] [As tipo] [= valor_predeterminado] Parte Optional Descripcin Opcional. Indica que un argumento no es necesario. Si se utiliza, todos los argumentos posteriores de lista_argumentos tambin deben ser opcionales y declararse mediante la palabra clave Optional. Optional no se puede utilizar para cualquier argumento si se emplea ParamArray. Opcional. Indica que el argumento se pasa por valor. Opcional. Indica que el argumento se pasa por referencia. ByRef es el valor predeterminado en Visual Basic. Opcional. Slo se utiliza como ltimo argumento de lista_argumentos para indicar que el ltimo argumento es una matriz Optional de elementos Variant. La palabra clave ParamArray le permite proporcionar un nmero arbitrario de argumentos. No puede utilizarse con ByVal, ByRef u Optional. Requerido. Nombre de la variable que representa el argumento; sigue las convenciones estndar de nombres de variables. Opcional. Tipo de datos del argumento pasado al procedimiento; puede ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no compatible actualmente), Date, String (slo longitud variable), Object, Variant, o un tipo de objeto especfico. Si el parmetro no es Optional, se puede especificar tambin un tipo definido por el usuario.

ByVal ByRef ParamArray

nombre_ variable tipo

valor_ Opcional. Cualquier constante o expresin constante. Slo es vlido para predeterminado parmetros Optional. Si el tipo es Object, un valor predeterminado explcito slo puede ser Nothing.

Comentarios

Si no se especifican de forma explcita mediante Public, Private o Friend, los procedimientos Function son pblicos de manera predeterminada. Si no se emplea Static, el valor de las variables locales no se conserva entre distintas llamadas. La palabra clave Friend slo puede usarse en mdulos de clase. Sin embargo, puede accederse a los procedimientos Friend por procedimientos en cualquier mdulo de un proyecto. Un procedimiento Friend no aparece en la biblioteca de tipos de su clase primaria. Precaucin Los procedimientos Function pueden ser recursivos; es decir, pueden llamarse a s mismos para realizar una tarea determinada. Sin embargo, la recursin puede provocar el desbordamiento de pila. La palabra clave Static no se suele utilizar con procedimientos Function recursivos. Todo el cdigo ejecutable debe estar dentro de procedimientos. No puede definir un procedimiento Function dentro de otro procedimiento Function, Sub o Property. La instruccin Exit Function produce una salida inmediata de un procedimiento Function. La ejecucin del programa contina con la instruccin que sigue a la instruccin que llam al procedimiento Function. En cualquier lugar de un procedimiento Function puede aparecer cualquier nmero de instrucciones Exit Function. Al igual que un procedimiento Sub, un procedimiento Function es un procedimiento independiente que puede adoptar argumentos, realizar una serie de instrucciones y cambiar los valores de sus argumentos. Sin embargo, a diferencia de un procedimiento Sub, puede utilizar un procedimiento Function en el lado derecho de una expresin de la misma forma en que utiliza cualquier funcin intrnseca, como Sqr, Cos o Chr, cuando desea emplear el valor devuelto por la funcin. Para llamar a un procedimiento Function, utilice en una expresin el nombre de funcin seguido de la lista de argumentos entre parntesis. Consulte la instruccin Call para obtener informacin especfica acerca de cmo llamar a los procedimientos Function. Para devolver un valor de una funcin, asigne el valor al nombre de la funcin. En cualquier lugar del procedimiento puede aparecer cualquier nmero de asignaciones de este tipo. Si no se asigna ningn valor a nombre, el procedimiento devolver un valor predeterminado: una funcin numrica devuelve 0, una funcin de cadena devuelve una cadena de longitud cero ("") y una funcin Variant devuelve Empty. Una funcin que devuelve una referencia de objeto devuelve Nothing si no se asigna ninguna referencia de objeto a nombre (mediante Set) dentro del procedimiento Function. El ejemplo siguiente muestra cmo asignar un valor de retorno a una funcin llamada BinarySearch. En este caso, False se asigna al nombre para indicar que no se encontr algn valor.
Function BinarySearch(. . .) As Boolean . . . ' Valor no encontrado. Devuelve un valor False. If lower > upper Then

BinarySearch = False Exit Function End If . . . End Function

Las variables empleadas en procedimientos Function se dividen en dos categoras: las que se declaran explcitamente dentro del procedimiento y las que no. Las variables que se declaran explcitamente en un procedimiento (mediante Dim u otra instruccin equivalente) siempre son locales del procedimiento. Las variables que se utilizan pero no se declaran explcitamente en un procedimiento tambin son locales, a menos que se hayan declarado explcitamente en algn nivel superior fuera del procedimiento. Precaucin Un procedimiento puede utilizar una variable que no se ha declarado explcitamente en el procedimiento, pero puede ocurrir un conflicto de nombres si algo que defini en un nivel de mdulo tiene el mismo nombre. Si su procedimiento hace referencia a una variable no declarada que tiene el mismo nombre que otro procedimiento, constante o variable, se supone que el procedimiento hace referencia a ese nombre a nivel de mdulo. Declare explcitamente las variables para evitar este tipo de conflicto. Puede utilizar una instruccin Option Explicit para forzar la declaracin explcita de variables. Precaucin Visual Basic puede reorganizar las expresiones aritmticas para mejorar su eficacia interna. Evite utilizar un procedimiento Function en una expresin aritmtica cuando la funcin cambie el valor de las variables de la misma expresin.

Utilizar instrucciones Do...Loop


Se pueden usar instrucciones Do...Loop para ejecutar un bloque de instrucciones un nmero indefinido de veces. Las instrucciones se repiten mientras una condicin sea True o hasta que llegue a ser True.

Repetir instrucciones mientras una condicin es True


Hay dos formas de utilizar la palabra clave While para comprobar el estado de una condicin en una instruccin Do...Loop. Se puede comprobar la condicin antes de entrar en el bucle, o despus de que el bucle se haya ejecutado al menos una vez. En el siguiente procedimiento ComPrimeroWhile, la condicin se comprueba antes de entrar en el bucle. Si miNum vale 9 en vez de 20, las instrucciones contenidas en el bucle no se ejecutarn nunca. En el procedimiento ComFinalWhile, las instrucciones contenidas en el bucle slo se ejecutarn una vez antes de que la condicin llegue a ser False.
Sub ComPrimeroWhile() contador = 0 miNum = 20 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

Repetir instrucciones hasta que una condicin llegue a ser True


Hay dos formas de utilizar la palabra clave Until para comprobar el estado de una condicin en una instruccin Do...Loop. Se puede comprobar la condicin antes de entrar en el bucle (como muestra el procedimiento ComPrimeroUntil) o se pueden comprobar despus de que el bucle se haya ejecutado al menos una vez (como muestra el procedimiento ComFinalUntil). El bucle sigue ejecutndose mientras la condicin 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

Instruccin de salida de Do...Loop desde dentro del bucle


Es posible salir de Do...Loop usando la instruccin Exit Do. Por ejemplo, para salir de un bucle sin fin, se puede usar la instruccin Exit Do en el bloque de instrucciones True de una instruccin If...Then...Else o Select Case. Si la condicin es False, el bucle seguir ejecutndose normalmente. En el siguiente ejemplo, se asigna a miNum un valor que crea un bucle sin fin. La instruccin If...Then...Else comprueba esa condicin 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 ejecucin de un bucle sin fin, presione la tecla ESC o CTRL+PAUSE.

Utilizar instrucciones For Each...Next

Las instrucciones For Each...Next repiten un bloque de instrucciones para cada uno de los objetos de una coleccin o para cada elemento de una matriz. Visual Basic asigna valor automticamente 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 cdigo recorre todos los elementos de una matriz e introduce en cada uno de ellos el valor de la variable ndice I.
Dim PruebaMatriz(10) As Integer, I As Variant For Each I In PruebaMatriz PruebaMatriz(I) = I Next I

Recorrer un conjunto de celdas


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 Pgina1 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

Salir de un bucle For Each...Next antes de que finalice


Se puede salir de un bucle For Each...Next mediante la instruccin Exit For. Por ejemplo, cuando se produce un error se puede usar la instruccin Exit For en el bloque de instrucciones True de una instruccin If...Then...Else o Select Case que detecte especficamente el error. Si el error no se produce, la instruccin IfThenElse es False y el bucle se seguir ejecutando normalmente. El siguiente ejemplo detecta la primera celda del rango A1:B5 que no contiene un nmero. 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 numrico." Exit For End If

Next c End Sub

Utilizar instrucciones For...Next


Las instrucciones For...Next se pueden utilizar para repetir un bloque de instrucciones un nmero determinado de veces. Los bucles For usan una variable contador cuyo valor se aumenta o disminuye cada vez que se ejecuta el bucle. El siguiente procedimiento hace que el equipo emita un sonido 50 veces. La instruccin For determina la variable contador x y sus valores inicial y final. La instruccin Next incrementa el valor de la variable contador en 1.
Sub Bips() For x = 1 To 50 Beep Next x End Sub

Mediante la palabra clave Step, se puede aumentar o disminuir la variable contador en el valor que se desee. En el siguiente ejemplo, la variable contador j se incrementa en 2 cada vez que se repite la ejecucin del bucle. Cuando el bucle deja de ejecutarse, total representa la suma de 2, 4, 6, 8 y 10.
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 ejecucin 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 despus de la instruccin Next. En los ejemplos anteriores, el nombre de la variable contador se ha incluido para facilitar la lectura del cdigo. Se puede abandonar una instruccin For...Next antes de que el contador alcance su valor final, para ello se utiliza la instruccin Exit For. Por ejemplo, si se produce un error se puede usar la instruccin Exit For en el bloque de instrucciones True de una instruccin If...Then...Else o Select Case que detecte especficamente ese error. Si el error no se produce, la instruccin IfThenElse es False y el bucle continuar ejecutndose normalmente.

Utilizar instrucciones If...Then...Else


Se puede usar la instruccin If...Then...Else para ejecutar una instruccin o bloque de instrucciones determinadas, dependiendo del valor de una condicin. Las instrucciones If...Then...Else se pueden anidar en tantos niveles como sea necesario. Sin embargo, para hacer ms legible el cdigo es aconsejable utilizar una instruccin Select Case en vez de recurrir a mltiples niveles de instrucciones If...Then...Else anidadas.

Ejecutar una sola instruccin cuando una condicin es True


Para ejecutar una sola instruccin cuando una condicin es True, se puede usar la sintaxis de lnea nica de la instruccin If...Then...Else. El siguiente ejemplo muestra la sintaxis de lnea 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 ms de una lnea de cdigo, es preciso utilizar la sintaxis de mltiples lneas. Esta sintaxis incluye la instruccin End If, tal y como muestra el siguiente ejemplo:
Sub AvisoUsuario(valor as If valor = 0 Then Aviso.ForeColor = Aviso.Font.Bold = Aviso.Font.Italic End If End Sub Long) "Red" True = True

Ejecutar unas instrucciones determinadas si una condicin es True y ejecutar otras si es False
Use una instruccin If...Then...Else para definir dos bloques de instrucciones ejecutables: un bloque que se ejecutar cuando la condicin es True y el otro que se ejecutar si la condicin es False.
Sub AvisoUsuario(valor as If valor = 0 Then Aviso.ForeColor = Aviso.Font.Bold = Aviso.Font.Italic Else Aviso.Forecolor = Aviso.Font.Bold = Aviso.Font.Italic End If End Sub Long) vbRed True = True vbBlack False = False

Comprobar una segunda condicin si la primera condicin es False


Se pueden aadir instrucciones ElseIf a una instruccin If...Then...Else para comprobar una segunda condicin si la primera es False. Por ejemplo, el siguiente procedimiento funcin calcula una bonificacin salarial dependiendo de la clasificacin del trabajador. La instruccin que sigue a la instruccin Else slo se ejecuta cuando las condiciones de todas las restantes instrucciones If y ElseIf son False.
Function Bonificacin(rendimiento, salario) If rendimiento = 1 Then Bonificacin = salario * 0.1 ElseIf rendimiento = 2 Then Bonificacin= salario * 0.09 ElseIf rendimiento = 3 Then Bonificacin = salario * 0.07 Else Bonificacin = 0 End If End Function

Utilizar instrucciones Select Case


La instruccin Select Case se utiliza como alternativa a las instrucciones ElseIf en instrucciones If...Then...Else cuando se compara una expresin con varios valores diferentes. Mientras que las instrucciones If...Then...Else pueden comparar una expresin distinta para cada instruccin ElseIf, la instruccin Select Case compara nicamente la expresin que evala al comienzo de la estructura de control.

En el siguiente ejemplo, la instruccin Select Case evala el argumento rendimiento que se pasa al procedimiento. Observe que cada instruccin Case puede contener ms de un valor, una gama de valores, o una combinacin de valores y operadores de comparacin. La instruccin opcional Case Else se ejecuta si la instruccin Select Case no encuentra ninguna igualdad con los valores de la instrucciones Case.
Function Bonificacin(rendimiento, Select Case rendimiento Case 1 Bonificacin = salario Case 2, 3 Bonificacin = salario Case 4 To 6 Bonificacin = salario Case Is > 8 Bonificacin = 100 Case Else Bonificacin = 0 End Select End Function salario) * 0.1 * 0.09 * 0.07

Utilizar instrucciones With


La instruccin With permite especificar una vez un objeto o tipo definido por el usuario en una serie entera de instrucciones. Las instrucciones With aceleran la ejecucin de los procedimientos y ayudan a evitar el tener que escribir repetidas veces las mismas palabras. El siguiente ejemplo introduce en un rango de celdas el nmero 30, aplica a esas celdas un formato en negrita y hace que su color de fondo sea el amarillo.
Sub RangoFormato() With Worksheets("Hoja1").Range("A1:C10") .Value = 30 .Font.Bold = True .Interior.Color = RGB(255, 255, 0) End With End Sub

Las instrucciones With se pueden anidar para aumentar su eficiencia. El siguiente ejemplo inserta una formula en la celda A1 y selecciona a continuacin el tipo de letra.
Sub MiEntrada() With Workbooks("Libro1").Worksheets("Hoja1").Cells(1, 1) .Formula = "=SQRT(50)" With .Font .Name = "Arial" .Bold = True

.Size = 8 End With End With End Sub

Comprender el alcance y la visibilidad


El alcance se refiere a la disponibilidad de una variable, constante, o procedimiento para ser usado por otro procedimiento. Hay tres niveles de alcance: nivel de procedimiento, nivel de mdulo privado y nivel de mdulo pblico. El alcance de una variable se determina cuando se declara. es aconsejable declarar todas las variables explcitamente para evitar errores de conflicto de nombres entre variables que tiene alcances distintos.

Definir el alcance de un nivel de procedimiento


Una variable o constante definida desde dentro de un procedimiento no es visible fuera de ese procedimiento. Slo el procedimiento que contiene la declaracin de la variable puede usarlos. En el siguiente ejemplo, el primer procedimiento presenta un cuadro de mensaje que contiene una cadena de texto. El segundo procedimiento presenta un cuadro de mensaje en blanco ya que la variable strMensaje es local para el primer procedimiento.
Sub VariableLocal() Dim strMensaje As String strMensaje = "Esta variable no se puede usar fuera de este procedimiento." MsgBox strMensaje End Sub Sub FueraAlcance() MsgBox strMensaje End Sub

Definir el alcance de nivel de mdulo privado


Se pueden definir variables y constantes de nivel de mdulo en la seccin Declarations de un mdulo. Las variables de nivel de mdulo pueden ser pblicas o privadas. Las variables pblicas estn disponibles para todos los procedimientos de todos los mdulos de un proyecto; las variables privadas slo estn disponibles para los procedimientos de ese mdulo. Las variables declaradas con la instruccin Dim en la seccin Declarations tiene un alcance privado a no ser que se especifique otra cosa. Sin embargo, es aconsejable colocar la palabra clave Private delante del nombre de la variable para que el alcance sea evidente al leer el cdigo. En el siguiente ejemplo, la variable de cadena strMensaje est disponible para cualquier procedimiento definido en el mdulo. Cuando se llama al segundo procedimiento, presenta el contenido de la variable de cadena strMensaje en un cuadro de dialogo.

' Aada lo siguiente a la seccin de Declarations del mdulo. Private strMensaje sAs String Sub InicializaVariablePrivada() strMensaje = "Esta variable no se puede usar fuera de este mdulo." End Sub Sub UsaVariablePrivada() MsgBox strMensaje End Sub

Nota Los procedimientos pblicos de un mdulo estndar o mdulo de clase estn disponibles para cualquier proyecto de referencia al proyecto actual. Para limitar el alcance de todos los procedimientos de un mdulo al proyecto actual, aada una instruccin Option Private Module a la seccin Declarations del mdulo. Las variables y procedimientos pblicos seguirn estando disponibles para los restantes procedimientos del proyecto actual, pero no lo estarn para los proyectos que a los que puedan hacer referencia.

Definir el alcance de nivel de mdulo pblico


Si se declara una variable de nivel de mdulo como pblica, estar disponible para todos los procedimientos del mismo proyecto. En el siguiente ejemplo, la variable de cadena strMensaje se puede usar en cualquier procedimiento de un mdulo del proyecto.
' Incluya esto en la seccin Declarations del mdulo. Public strMensaje As String

Todos los procedimientos son pblicos a menos que se especifique lo contrario, excepto en el caso de los procedimientos evento. Cuando Visual Basic crea un procedimiento evento, la palabra clave Private se inserta automticamente antes de la declaracin del procedimiento. Para los restantes procedimientos, debe declarar explcitamente con la palabra clave Private si no desea que sean pblicos. Se pueden usar procedimientos, variables y constantes pblicas definidas en mdulos estndar o mdulos de clase de proyectos que hagan referencia al actual. Sin embargo, es preciso establecer una referencia al proyecto en que estn definidos. Los procedimientos, variables y constantes pblicas definidas en mdulos que no sean estndar o de clase, como pueden ser los mdulos de formulario o mdulos de informe, no estn disponibles desde los proyectos que hacen referencia al actual, ya que estos mdulos son privados para el proyecto en el que residen.

Comprender la vida de las variables

El tiempo durante el que una variable conserva su valor se conoce como vida. El valor de la variable puede cambiar durante su vida, pero conserva algn valor. Cuando una variable pierde su alcance, ya no tiene ningn valor. Cuando un procedimiento comienza a ejecutarse, se inicializan todas las variables. Las variables numricas se inicializan a cero, las cadenas de longitud variable se inicializan a una cadena vaca de longitud cero ("") y una cadena de longitud fija se llena con los caracteres correspondientes al cdigo ASCII 0, o Chr(0). Las variables Variant se inicializan a Empty. Cada uno de los elementos de una variable de tipo definido por el usuario se inicializa como si se tratase de una variable independiente. Cuando se declara una variable de objeto, se reserva el espacio correspondiente en memoria, pero se le da el valor Nothing hasta que se le asigne una referencia a objeto mediante la instruccin Set. Si el valor de una variable no cambia durante la ejecucin del cdigo, conserva su valor de inicializacin hasta que pierda alcance. Una variable de nivel de procedimiento declarada mediante la instruccin Dim conserva su valor hasta que el procedimiento termina de ejecutarse. Si el procedimiento llama a otros procedimientos, la variable conserva su valor tambin mientras se ejecutan esos procedimientos. Si una variable de nivel de procedimiento de declara con la palabra clave Static, la variable conserva su valor mientras haya cdigo en ejecucin, sea cual sea el mdulo. Cuando todo el cdigo ha terminado de ejecutarse, la variable pierde su alcance y su valor. Su vida es la misma que la de una variable de nivel de mdulo. Una variable de nivel de mdulo es distinta a una variable esttica. En un mdulo estndar o un mdulo de clase, conserva su valor hasta que se termina de ejecutar el cdigo. En un mdulo de clase conserva su valor mientras exista una definicin de la clase. Las variables de nivel de mdulo consumen memoria hasta que sus valores se vuelven a inicializa, por eso slo se deben utilizar cuando sea necesario. Si se incluye la palabra clave Static antes de una instruccin Sub o Function, los valores de todas las variables de nivel de procedimiento del procedimiento se conservarn entre las sucesivas llamadas.

Comprender la sintaxis de Visual Basic


En la seccin de Ayuda de Visual Basic correspondiente a un mtodo, instruccin o procedimiento Function la sintaxis muestra todos los elementos necesarios para utilizar

correctamente ese mtodo, instruccin o funcin. Los ejemplos siguientes explican como deben interpretarse los elementos sintcticos ms comunes. Sintaxis del mtodo Activate objeto.Activate En la sintaxis del mtodo Activate, la palabra "objeto" en cursiva es la posicin reservada para la informacin que introduce el usuario en este caso, cdigo que devuelve un objeto. Las palabras que se muestran en negrita deben escribirse exactamente tal y como se indica. Por ejemplo, el siguiente procedimiento activa la segunda ventana en el documento activo.
Sub Activar() Windows(2).Activate End Sub

Sintaxis de la funcin MsgBox MsgBox(texto[, botones] [, ttulo] [, archivoayuda, contexto]) En la sintaxis de la funcin MsgBox, las palabras en cursiva y negrita son argumentos con nombre de la funcin. Los argumentos que aparecen entre corchetes son opcionales. (No escriba los corchetes en el cdigo de Visual Basic). En el caso de la funcin MsgBox, el nico argumento que se debe incluir es el texto de la pregunta. Los argumentos para funciones y mtodos se pueden especificar en el cdigo mediante su posicin o por su nombre. Para especificar argumentos mediante su posicin, siga el orden que se indica en la sintaxis, separando los argumentos con una coma, por ejemplo:
MsgBox "Su respuesta es correcta!",0,"Cuadro de Respuesta"

Para especificar un argumento mediante su nombre basta con usar el nombre del argumento seguido de dos puntos y un signo igual (:=) y el valor del argumento. Los argumentos con nombre se pueden especificar en cualquier orden, por ejemplo:
MsgBox Title:="Cuadro de Respuesta", Prompt:="Su respuesta es correcta!"

La sintaxis de las funciones y algunos mtodos muestran los argumentos entre parntesis. Estas funciones y mtodos devuelven valores, por eso deben encerrarse los argumentos entre parntesis al asignar un valor a una variable. Si se ignora el valor de retorno o si no se pasan argumentos en forma alguna, no deben incluirse los parntesis. Los mtodos que no devuelven valores no necesitan que sus argumentos aparezcan encerrados entre parntesis. Estas normas son aplicables tanto si se usan argumentos posicionales o nominativos. En el siguiente ejemplo, el valor que devuelve la funcin MsgBox es un nmero que indica el botn seleccionado almacenado en la variable miVar. Dado que se utiliza el valor que

devuelve la funcin, es preciso utilizar parntesis. Otro cuadro de mensaje presenta entonces en pantalla el valor de la variable.
Sub Pregunta() miVar = MsgBox(Prompt:="Me gusta mi trabajo.", _ Title:="Cuadro de respuesta", Buttons:="4") MsgBox miVar End Sub

Sintaxis de la instruccin Option Option Compare {Binary | Text | Database} En la sintaxis de la instruccin Option Compare, las llaves y la lnea vertical indican una eleccin obligatoria entre tres opciones. (No escriba las llaves en la instruccin de Visual Basic). Por ejemplo, la siguiente instruccin especifica que dentro del mdulo, las cadenas se comparan en un criterio de ordenacin que no depende del maysculas o minsculas.
Option Compare Text

Sintaxis de la instruccin Dim Dim nombrevariable[([subscriptos])] [As tipo] [, nombrevariable[([subscriptos])] [As tipo]] . . . En la sintaxis de la instruccin Dim, la palabra Dim es una palabra clave exigida. El nico elemento necesario es nombrevariable (el nombre de la variable). Por ejemplo, la siguiente instruccin crea tres variables: miVar, siguienteVar y terceraVar. Estas variables se declaran automticamente como Variant.
Dim miVar, siguienteVar, terceraVar

El siguiente ejemplo declara una variable como String. Al incluir un tipo de datos se ahorra memoria y se pueden evitar errores en el cdigo.
Dim miRespuesta As String

Para declarar varias variables en una instruccin, debe incluirse el tipo de datos para cada variable. Las variables declaradas sin un tipo de datos se declaran automticamente como Variant.
Dim x As Integer, y As Integer, z As Integer

En la siguiente instruccin, a x e y se les asigna el tipo de datos Variant. Slo a z se le asigna el tipo de datos Integer.
Dim x, y, z As Integer

Si se declara una variable matriz, deben incluirse los parntesis. Los subscriptos son opcionales. La siguiente instruccin define las dimensiones de una matriz dinmica, miMatriz.
Dim miMatriz()

Comprender los argumentos con nombre y opcionales


Cuando se hace una llamada a un procedimiento Sub o Function, se pueden incluir argumentos de forma posicional, es decir, en el orden en que aparecen en la definicin del procedimiento, o se pueden incluir los argumentos con su nombre sin respetar ningn orden. Por ejemplo, el siguiente procedimiento Sub acepta tres argumentos:
Sub PasaArgs(strNombre As String, intEdad As Integer, dteNacimiento As Date) Debug.Print strNombre, intEdad, dteNacimiento End Sub

Al llamar este procedimiento se pueden incluir sus argumentos en la posicin correcta, todos separados por comas, tal y como muestra el siguiente ejemplo:
PasaArgs "Mara", 29, #21-2-69#

Tambin se puede hacer una llamada a este procedimiento e incluir argumentos con nombre, separados por comas.
PasaArgs intEdad:=29, dteNacimiento:=#21/2/69#, strNombre:="Maria"

Un argumento nominativo est formado por el nombre del argumento seguido por dos puntos y un signo igual (:=), todo ello seguido por el valor del argumento. Los argumentos con nombre son muy tiles cuando se llama a procedimientos con argumentos opcionales. Si se usan argumentos con nombre no ser necesario incluir sucesivas comas para sustituir argumentos posicionales ausentes. Al usar argumentos con nombre es ms fcil controlar qu argumentos se pasan y cules se omiten. Los argumentos opcionales van precedidos por la palabra clave Optional en la definicin del procedimiento. En la definicin del procedimiento se puede especificar tambin un valor predefinido para el argumento opcional. Por ejemplo:

Sub ArgsOpcionales(strProvincia As String, Optional strPais As String = "MXICO") . . . End Sub

Cuando se hace una llamada a un procedimiento con un argumento opcional, se puede optar por especificar o no el argumento opcional. Si no se especifica, se usar el valor predefinido si existe. Si no se ha especificado tampoco un valor predefinido, el argumento tendr el valor de inicializacin que le corresponda a una variable del mismo tipo. El siguiente procedimiento incluye un argumento opcional, la variable varPais. La funcin IsMissing determina si se ha pasado o no un argumento opcional al procedimiento.
Sub ArgsOpcionales(strProvincia As String, Optional intRegion As Integer, _ Optional strPais As String = "MXICO") If IsMissing(intRegion) AND IsMissing(strPais) Then Debug.Print strProvincia ElseIf IsMissing(strPais) Then Debug.Print strProvincia, intRegion ElseIf IsMissing(intRegion) Then Debug.Print strProvincia, strPais Else Debug.Print strProvincia, intRegion, strPais End If End Sub

Este procedimiento se puede llamar empleando argumentos con nombre tal y como muestran los siguientes ejemplos.
ArgsOpcionales strPais:="MXICO", strProvincia:="SE" ArgsOpcionales strProvincia:= "SE", intRegion:=5

Comprender los tipos de datos Variant


El tipo de datos Variant se especifica automticamente si no se especifica otro tipo de datos al declarar una constante, variable, o argumento. Las variables declaradas como del tipo de datos Variant pueden contener valores numricos, cadenas de texto, fecha, hora o Booleans y pueden convertir los valores que contienen de forma automtica. Los valores numricos Variant ocupan 16 bytes de memoria (lo que slo es significativo en procedimientos grandes o mdulos complejos) y son ms lentos a la hora de su acceso que las variables de tipo explcito de los restantes tipos. Es muy raro utilizar el tipo de datos Variant para una constante. Los valores de cadena Variant necesitan 22 bytes de memoria. Las siguientes instrucciones crean variables Variant:

Dim miVar Dim tuVar As Variant laVar = "Esto es un texto."

La ltima instruccin no declara explcitamente la variable laVar, sino que la declara implcitamente, o automticamente. Las variables que se declaran implcitamente se especifican como del tipo de datos Variant. Sugerencia Si se especifica un tipo de datos para una variable o argumento y a continuacin se utiliza un tipo errneo de datos, se producir un error de tipo de datos. Para evitar errores de tipo de datos, se deben usar slo variables (del tipo de datos Variant) o declarar explcitamente todas las variables y especificar para ellas un tipo de datos. El ltimo mtodo es el preferible.

Comprender objetos, propiedades, mtodos y eventos


Un objeto representa un elemento de una aplicacin, como una hoja de clculo, una celda, un diagrama, un formulario o un informe. En cdigo de Visual Basic, un objeto debe identificarse antes de se pueda aplicar uno de los mtodos del objeto o cambiar el valor de una de sus propiedades. Una coleccin es un objeto que contiene varios objetos que normalmente, pero no siempre, son del mismo tipo. En Microsoft Excel, por ejemplo, el objeto Workbooks contiene todos los objetos Workbook abiertos. En Visual Basic, la coleccin Forms contiene todos los objetos Form existentes en una aplicacin. Los elementos de una coleccin se pueden identificar mediante su nmero o su nombre. Por ejemplo, en el siguiente procedimiento, Libro(1) identifica al primer objeto Workbook abierto.
Sub CierraPrimero() Libro(1).Close End Sub

El siguiente procedimiento utiliza un nombre especificado como cadena para identificar un objeto Form.
Sub CierraForm() Forms("MiForm.frm").Close End Sub

Tambin es posible operar al mismo tiempo sobre toda una coleccin de objetos siempre que los objetos compartan mtodos comunes. Por ejemplo, el siguiente procedimiento cierra todos los formularios abiertos.
Sub CierraTodos() Forms.Close End Sub

Mtodo es toda accin que puede realizar un objeto. Por ejemplo, Add es un mtodo del objeto ComboBox ya que sirve para aadir un nuevo elemento a un cuadro combinado. El siguiente procedimiento utiliza el mtodo Add para aadir un nuevo elemento a un ComboBox.
Sub AadeElemen(nuevoElemento as String) Combo1.Add nuevoElemento End Sub

Propiedad es un atributo de un objeto que define una de las caractersticas del objeto, tal como su tamao, color o localizacin en la pantalla, o un aspecto de su comportamiento, por ejemplo si est visible o activado. Para cambiar las caractersticas de un objeto, se cambia el valor de sus propiedades Para dar valor a una propiedad, hay que colocar un punto detrs de la referencia a un objeto, despus el nombre de la propiedad y finalmente el signo igual (=) y el nuevo valor de la propiedad. Por ejemplo, el siguiente procedimiento cambia el ttulo de un formulario de Visual Basic dando un valor a la propiedad Caption.
Sub CambiaNombre(nuevoTitulo) miForm.Caption = nuevoTitulo End Sub

Hay propiedades a las que no se puede dar valor. El tema de ayuda de cada propiedad indica si es posible leer y dar valores a la propiedad (lectura/escritura), leer slo el valor de la propiedad (slo lectura) o slo dar valor a la propiedad (slo escritura). Se puede obtener informacin sobre un objeto devolviendo el valor de una de sus propiedades. El siguiente procedimiento utiliza un cuadro de dilogo para presentar el ttulo que aparece en la parte superior del formulario activo en ese momento.
Sub NombreFormEs() formNonmbre = Screen.ActiveForm.Caption MsgBox formNombre End Sub

Evento es toda accin que puede ser reconocida por un objeto, como puede ser el clic del mouse o la pulsacin de una tecla y para la que es posible escribir cdigo como respuesta. Los eventos pueden ocurrir como resultado de una accin del usuario o del cdigo de l programa, tambin pueden ser originados por el sistema.

Devolver objetos
Cada aplicacin tiene una forma de devolver los objetos que contiene. Sin embargo estos procedimientos no son siempre iguales, por ello debe consultar el tema de ayuda correspondiente al objeto o coleccin que est usando en la aplicacin para determinar la forma de devolver el objeto.

Declarar constantes
Al declarar una constante, se puede asignar a un valor un nombre que tenga algn significado apropiado. La instruccin Const se utiliza para declarar una constante y darle valor. Una constante no puede modificarse o cambiar de valor una vez que ha sido declarada. Se puede declarar una constante dentro de un procedimiento o al principio de un mdulo, en la seccin de Declarations. Las constantes a nivel de mdulo son privadas, a menos que se especifique lo contrario. Para declarar una constante pblica a nivel de mdulo, la instruccin Const debe ir precedida por la palabra clave Public. Se puede declarar explcitamente una constante como privada colocando la palabra clave Private antes de la instruccin Const para facilitar la lectura y comprensin del cdigo. Si desea ms informacin, consulte la seccin "Comprender el alcance y la visibilidad" en la Ayuda de Visual Basic. El siguiente ejemplo declara la constante Public EdadCon como un Integer y le asigna el valor 34.
Public Const EdadCon As Integer = 34

Las constantes se pueden declarar de uno de los siguientes tipos de datos: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String, o Variant. Dado que ya se conoce el valor de una constante, es muy fcil elegir el tipo de datos en la instruccin Const. Si desea ms informacin sobre tipos de datos, consulte la seccin "Tipo de datos Summary" en la Ayuda de Visual Basic. En una sola instruccin se pueden declarar varias constantes. Para especificar un tipo de datos, debe incluirse el tipo de datos para cada constante. En la siguiente instruccin se declaran como Integer las constantes EdadCon y SalarioCon.
Const EdadCon As Integer = 34, SalarioCon As Currency = 35000

Declarar matrices

Las matrices se declaran igual que las restantes variables, utilizando instrucciones Dim, Static, Private, o Public. La diferencia entre las variables escalares (aquellas que no son matrices) y las variables matriz es que normalmente se debe especificar el tamao de la matriz. Una matriz con un tamao especificado es una matriz de tamao fijo. Una matriz cuyo tamao puede cambiar mientras el programa se est ejecutando es una matriz dinmica. Si una matriz se indexa desde 0 desde 1 depende del valor de la instruccin Option Base. Si Option Base 1 no se especifica, todos los ndices de matrices comienzan en cero.

Declarar una matriz fija


En la siguiente lnea de cdigo se declara como matriz Integer una matriz de tamao fijo con 11 filas y 11 columnas:
Dim MiMatriz(10, 10) As Integer

El primer argumento corresponde al nmero de filas y el segundo al nmero de columnas. Como sucede en cualquier otra declaracin de variable, a menos que se especifique para la matriz un tipo de datos, los elementos de sta sern del tipo Variant. Cada elemento numrico Variant de la matriz utiliza 16 bytes. Cada elemento de cadena Variant utiliza 22 bytes. Para escribir cdigo de la forma ms compacta posible, debe declarar explcitamente sus matrices con un tipo de datos distinto a Variant. Las siguientes lneas de cdigo comparan el tamao de varias matrices:
' Una matriz Integer utiliza 22 bytes (11 elementos * 2 bytes). ReDim MiMatrizInteger(10) As Integer ' Una matriz Double-precision utiliza 88 bytes (11 elementos * 8 bytes). ReDim MiMatrizDoble(10) As Double ' Una matriz Variant utiliza al menos 176 bytes (11 elementos * 16 bytes). ReDim MiMatrizVariant(10) ' La matriz Integer utiliza 100 * 100 * 2 bytes (20.000 bytes). ReDim MiMatrizInteger(99, 99) As Integer ' La matriz Double-precision utiliza 100 * 100 * 8 bytes (80.000 bytes). ReDim MiMatrizDoble (99, 99) As Double ' La matriz Variant utiliza al menos 160.000 bytes (100 * 100 * 16 bytes). ReDim MiMatrizVariant(99, 99)

El tamao mximo de una matriz depende del sistema operativo y de la cantidad de memoria disponible. Es ms lento utilizar una matriz que sobrepasa la cantidad de memoria RAM disponible en el sistema ya que los datos tienen que ser ledos y escritos del disco.

Declarar una matriz dinmica


Al declarar una matriz dinmica se puede cambiar el tamao de una matriz mientras que el cdigo se est ejecutando. Para declarar una matriz dinmica se usan las instrucciones Static, Dim, Private, o Public, dejando los parntesis vacos, tal y como se muestra en el siguiente ejemplo.
Dim MatrizSingle() As Single

Nota Se puede usar la instruccin ReDim para declarar implcitamente una matriz dentro de un procedimiento. Tenga cuidado para no cambiar el nombre de la matriz cuando use la instruccin ReDim, ya que se crear una segunda matriz incluso en el caso de que se haya incluido la instruccin Option Explicit en el mdulo. La instruccin ReDim se puede utilizar en un procedimiento, dentro del alcance de la matriz, para cambiar el nmero de dimensiones, definir el nmero de elementos y para definir los lmites superior e inferior para cada dimensin. Se puede usar la instruccin ReDim para modificar la matriz dinmica cuantas veces sea necesario. Sin embargo, cada vez que se hace, se pierden los valores almacenados en la matriz. Se puede usar la instruccin ReDim Preserve para ampliar una matriz conservando los valores que contiene. Por ejemplo, la siguiente instruccin aade 10 nuevos elementos a la matriz MatrizVar sin perder los valores almacenados en los elementos originales.
ReDim Preserve MatrizVar(UBound(MatrizVar) + 10)

Nota Cuando se utiliza la palabra clave Preserve con una matriz dinmica, slo se puede cambiar el lmite superior de la ltima dimensin, no pudiendo modificarse el nmero de dimensiones.

Declarar variables
Para declarar variables se utiliza normalmente una instruccin Dim. La instruccin de declaracin puede incluirse en un procedimiento para crear una variable de nivel de procedimiento. O puede colocarse al principio de un mdulo, en la seccin Declarations, para crear una variable de nivel de mdulo. El siguiente ejemplo crea la variable NombreTexto y especficamente le asigna el tipo de datos String.
Dim NombreTexto As String

Si esta instruccin aparece dentro de un procedimiento, la variable NombreTexto se puede usar slo en ese procedimiento. Si la instruccin aparece en la seccin Declarations del mdulo, la variable NombreTexto estar disponible en todos los procedimientos dentro del mdulo, pero para los restantes mdulos del proyecto. Para hacer que esta variable est disponible para todos los procedimientos de un proyecto, basta con comenzar la declaracin con la instruccin Public, tal y como muestra el siguiente ejemplo:
Public NombreTexto As String

Si desea ms informacin sobre cmo dar nombre a sus variables, puede consultar la seccin "Visual Basic Naming Rules" en la Ayuda de Visual Basic. Las variables se pueden declarar como de uno de los siguientes tipos de datos: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (para cadenas de longitud variable), String * longitud (para cadenas de longitud fija), Object, o Variant. Si no se especifica el tipo de datos, el tipo de datos Variant es el predefinido. Tambin es posible crear un tipo definido por el usuario empleando la instruccin Type. Si desea ms informacin sobre tipos de datos puede consultar la seccin "Tipo de datos Summary" en la Ayuda de Visual Basic. Se pueden declarar varias variables en una instruccin. Para especificar el tipo de datos se debe incluir un tipo de datos para cada variable. En la siguiente instruccin se declaran las variables intX, intY, e intZ como del tipo Integer.
Dim intX As Integer, intY As Integer, intZ As Integer

En la siguiente instruccin, intX e intY se declaran como del tipo Variant; y slo intZ se declara como del tipo Integer.
Dim intX, intY, intZ As Integer

No es necesario especificar el tipo de datos en la instruccin de declaracin. Si se omite, la variable ser del tipo Variant.

Utilizar la instruccin Public


La instruccin Public se puede utilizar para declarar variables pblicas de nivel de mdulo.
Public NombreTexto As String

Las variables pblicas se pueden usar en cualquier procedimiento del proyecto. Si una variable pblica se declara en un mdulo estndar o en un mdulo de clase, tambin se podr usar en los proyectos referenciados por el proyecto en que se declara la variable pblica.

Utilizar la instruccin Private


La instruccin Private se puede usar para declarar variables privadas de nivel de mdulo.
Private MiNombre As String

Las variables Private pueden ser usadas nicamente por procedimientos pertenecientes al mismo mdulo. Nota Cuando se utiliza a nivel de mdulo, la instruccin Dim es equivalente a la instruccin Private. Sera aconsejable usar la instruccin Private para facilitar la lectura y comprensin del cdigo.

Utilizar la instruccin Static


Cuando se utiliza la instruccin Static en lugar de la instruccin Dim, la variable declarada mantendr su valor entre llamadas sucesivas.

Utilizar la instruccin Option Explicit


En Visual Basic se puede declarar implcitamente una variable usndola en una instruccin de asignacin. Todas las variables que se definen implcitamente son del tipo Variant. Las variables del tipo Variant consumen ms recursos de memoria que la mayor parte de las otros tipos de variables. Su aplicacin ser ms eficiente si se declaran explcitamente las variables y se les asigna un tipo de datos especfico. Al declararse explcitamente las variables se reduce la posibilidad de errores de nombres y el uso de nombres errneos. Si no desea que Visual Basic realice declaraciones implcitas, puede incluir en un mdulo la instruccin Option Explicit antes de todos los procedimientos. Esta instruccin exige que todas las variables del mdulo se declaren explcitamente. Si un mdulo incluye la instruccin Option Explicit, se producir un error en tiempo de compilacin cuando Visual Basic encuentre un nombre de variable que no ha sido previamente declarado, o cuyo nombre se ha escrito incorrectamente. Se puede seleccionar una opcin del entorno de programacin de Visual Basic para incluir automticamente la instruccin Option Explicit en todos los nuevos mdulos. Consulte la documentacin de su aplicacin para encontrar la forma de modificar las opciones de entorno de Visual Basic. Tenga en cuenta que esta opcin no tiene ningn efecto sobre el cdigo que se haya escrito con anterioridad. Nota Las matrices fijas y dinmicas siempre se tiene que declarar explcitamente.

Declarar una variable de objeto para automatizacin


Cuando se utiliza una aplicacin para controlar los objetos de otra aplicacin, debe establecerse una referencia a la biblioteca de tipos de la otra aplicacin. Una vez que se ha

establecido la referencia, se pueden declarar variables de objeto conforme a su tipo ms especfico. Por ejemplo, si desde Microsoft Word se establece una referencia a la biblioteca de tipos de Microsoft Excel, se puede declarar una variable del tipo Worksheet desde Microsoft Word para representar un objeto Worksheet de Microsoft Excel. Si se utiliza otra aplicacin para controlar objetos de Microsoft Access, es posible, en la mayor parte de los casos, declarar variables objetos del tipo ms especfico. Se puede usar tambin la palabra clave New para crear automticamente una nueva definicin de un objeto. Sin embargo, puede ser necesario indicar que se trata de un objeto Microsoft Access. Por ejemplo, cuando se declara una variable de objeto para representar un formulario de Microsoft Access desde Microsoft Visual Basic, debe distinguirse entre el objeto Form de Microsoft Access y un objeto Form de Visual Basic. Para ello se incluye el nombre de la biblioteca de tipos en la declaracin de la variable, como muestra el siguiente ejemplo:
Dim frmPedidos As New Access.Form

Algunas aplicaciones no reconocen algunos de los tipos de objetos de Microsoft Access. En ese caso, incluso despus de establecer una referencia a la biblioteca de tipos de Microsoft Access, ser necesario declarar todas las variables objeto de Microsoft Access como del tipo Object. Tampoco puede usarse la palabra clave New para crear una nueva definicin del objeto. El siguiente ejemplo muestra cmo declarar una variable que represente una nueva definicin del objeto Application de Microsoft Access desde una aplicacin que no reconoce los tipos de objeto de Microsoft Access. La aplicacin crea entonces una nueva definicin del objeto Application.
Dim appAccess As Object Set appAccess = CreateObject("Access.Application")

Para determinar la sintaxis a utilizar con una aplicacin determinada debe consultarse la documentacin de la aplicacin.

Escribir instrucciones de asignacin


Las instrucciones de asignacin asignan un valor o expresin a una variable o constante. Las instrucciones de asignacin incluyen siempre un signo igual (=). El siguiente ejemplo asigna el valor que devuelve la funcin InputBox a la variable suNombre.
Sub Pregunta() Dim suNombre As String suNombre = InputBox("Cmo se llama?") MsgBox "Su nombre es " & suNombre End Sub

La instruccin Let es opcional y normalmente se omite. Por ejemplo, la instruccin de asignacin anterior podra haberse escrito as:
Let suNombre = InputBox("Cmo se llama?").

La instruccin Set se utiliza para asignar un objeto a una variable que ha sido declarada como objeto. La palabra clave Set es necesaria. En el siguiente ejemplo, la instruccin Set asigna un rango de Hoja1 a la variable de objeto miCelda:
Sub DarFormato() Dim miCelda As Range Set miCelda = Worksheets("Hoja1").Range("A1") With miCelda.Font .Bold = True .Italic = True End With End Sub

Las instrucciones que establecen valores propiedad son tambin instrucciones de asignacin. El siguiente ejemplo asigna la propiedad Bold del objeto Font para la celda activa:
ActiveCell.Font.Bold = True

Escribir instrucciones de declaracin


Las instrucciones de declaracin se usan para dar nombre y definir procedimientos, variables, matrices y constantes. Cuando se declara un procedimiento, variable o constante, tambin se define su alcance que depende del lugar en que se coloque la declaracin y de las palabras clave que se usan para ello. El siguiente ejemplo contiene tres declaraciones.
Sub DarFormato() Const limite As Integer = 33 Dim miCelda As Range ' Mas instrucciones End Sub

La instruccin Sub (con la correspondiente instruccin End Sub) declara un procedimiento llamado DarFormato. Todas las instrucciones que aparecen entre las instrucciones Sub y End Sub se ejecutan cuando el procedimiento DarFormato se ejecuta o se llama.

Escribir un procedimiento Sub

La instruccin Const declara la constante limite, especificando el tipo de datos Integer y un valor de 33.

Declarar constantes

La instruccin Dim declara la variable miCelda. El tipo de datos es objeto, en este caso, un objeto Range de Microsoft Excel. Se puede declarar una variable que sea cualquiera de los objetos que estn accesibles a la aplicacin que se est usando. Las instrucciones Dim son un tipo de instruccin que se utiliza para declarar variables. Otras palabras clave utilizadas en las declaraciones son ReDim, Static, Public, Private y Const.

Declarar variables

Escribir instrucciones de Visual Basic


Una instruccin de Visual Basic es una instruccin completa. Puede incluir palabras clave, operadores, variables, constantes y expresiones. Todas las instrucciones pertenecen a una de las tres categoras siguientes:

Las instrucciones de declaracin, que dan nombre a una variable, constante o procedimiento y pueden tambin especificar su tipo de datos. Escribir instrucciones de declaracin

Las instrucciones de asignacin, que asignan un valor o expresin a una variable o constante. Escribir instrucciones de asignacin

Las instrucciones ejecutables, que inician acciones. Estas instrucciones pueden ejecutar un mtodo o funcin y pueden saltar a o evitar bloques de cdigo. Las instrucciones ejecutables a menudo contienen operadores condicionales o matemticas. Escribir instrucciones ejecutables

Continuar instrucciones en mltiples lneas


Una instruccin cabe normalmente en una lnea, pero puede continuarse en la siguiente utilizando un carcter de continuacin de lnea. En el siguiente ejemplo, la instruccin ejecutable MsgBox se extiende por las tres lneas que le siguen:
Sub CuadroDemo() 'Este procedimiento declara una variable de cadena, ' le asigna el valor Juan y a continuacin

' presenta en pantalla un mensaje concatenado. Dim miVar As String miVar = "Juan" MsgBox Prompt:="Hola " & myVar, _ Title:="Cuadro de saludo", _ Buttons:=vbExclamation End Sub

Aadir comentarios
Los comentarios pueden explicar un procedimiento o una instruccin en particular a cualquier persona que tenga que leer el cdigo. Visual Basic ignora los comentarios cuando ejecuta los procedimientos. Las lneas de comentario comienzan por un apstrofe (') o con la palabra clave Rem seguida por un espacio y puede colocarse en cualquier lugar del procedimiento. Para aadir un comentario a la misma lnea que ocupa una instruccin, debe insertarse un apstrofe despus de esta, seguido por el comentario. Los comentarios aparecen en pantalla en color verde, color predefinido.

Comprobar errores de sintaxis


Si se presiona la tecla ENTRAR despus de escribir una lnea de cdigo y la lnea aparece en pantalla en color rojo (puede que aparezca tambin un mensaje de error), debe averiguar cul es el problema en esa instruccin y corregirlo.

Escribir instrucciones ejecutables


Una instruccin ejecutable inicia una accin. Puede ejecutar un mtodo o funcin y saltar a bloques de cdigo o no ejecutar otros. Las instrucciones ejecutables incluyen a menudo operadores condicionales o matemticos. El siguiente ejemplo utiliza la instruccin For Each...Next para pasar por cada una de las celdas de un rango llamado MiIntervalo en la Hoja1 de un libro Microsoft Excel activo. La variable c es una celda en la coleccin de celdas que componen MiIntervalo.
Sub DarFormato() Const limite As Integer = 33 For Each c In Worksheets("Hoja1").Range("MiIntervalo").Cells If c.Value > limite Then With c.Font .Bold = True .Italic = True End With End If Next c MsgBox "Fin!" End Sub

La instruccin If...Then...Else del ejemplo comprueba el valor de la celda. Si el valor es mayor de 33, la instruccin With establece las propiedades Bold e Italic del objeto Font para esa celda. Las instrucciones If...Then...Else acaban con una instruccin End If. La instruccin With puede evitar que haya que escribir muchas veces las mismas palabras ya que las instrucciones que contiene se ejecutan automticamente en el objeto que sigue a la palabra clave With. La instruccin Next llama a la siguiente celda de la coleccin de celdas contenida en MiIntervalo. La funcin MsgBox (que presenta en pantalla un cuadro de dilogo de Visual Basic) presenta un mensaje indicando que el procedimiento Sub ha terminado de ejecutarse.

Escribir un procedimiento Function


Un procedimiento Function es una serie de instrucciones de Visual Basic encerradas entre dos instrucciones Function y End Function. Un procedimiento Function es similar a un procedimiento Sub, aunque una funcin puede devolver adems un valor. Un procedimiento Function acepta argumentos, como pueden ser constantes, variables o expresiones que le pasa el procedimiento que efecta la llamada. Si un procedimiento Function no tiene argumentos, la instruccin Function debe incluir un par de parntesis vacos. Una funcin devuelve un valor asignndolo a su nombre en una o ms instrucciones del procedimiento. En el siguiente ejemplo, la funcin Celsius calcula grados centgrados a partir de grados Fahrenheit. Cuando se llama a la funcin desde el procedimiento Principal, se le pasa una variable que contiene el valor del argumento. El resultado de los clculos se devuelve al procedimiento que efecto la llamada y se presenta en un cuadro de mensaje.
Sub Principal() temp = Application.InputBox(Texto:= _ "Por favor, introduzca la temperatura en grados F.", Tipo:=1) MsgBox "La temperatura es " & Celsius(temp) & " grados C." End Sub Function Celsius(GradosF) Celsius = (GradosF - 32) * 5 / 9 End Function

Escribir un procedimiento Sub

Un procedimiento Sub es una serie de instrucciones Visual Basic, encerradas entre un par de instrucciones Sub y End Sub, que realizan acciones especficas pero no devuelven ningn valor. Un procedimiento Sub puede aceptar argumentos, como constantes, variables o expresiones que le pasa el procedimiento que ha efectuado la llamada. Si un procedimiento Sub no tiene argumentos, la instruccin Sub debe incluir un par de parntesis vaco. El siguiente procedimiento Sub dispone de comentarios explicativos en cada lnea.
' Declara un procedimiento llamado ObtenInformacion ' Este procedimiento Sub no acepta argumentos Sub ObtenInformacion() ' Declara una variable de cadena llamada respuesta Dim respuesta As String ' Asigna el valor que devuelve la funcion InputBox a la variable respuesta respuesta = InputBox(Prompt:="Cmo se llama?") ' Instruccin condicional If...Then...Else If respuesta = Empty Then ' Llama a la funcin MsgBox MsgBox Prompt:="No ha escrito su nombre." Else ' Funcin MsgBox concatenada con la variable respuesta MsgBox Prompt:="Su nombre es " & respuesta ' Fin de la instruccin If...Then...Else End If ' Fin del procedimiento Sub End Sub

Llamar a procedimientos Sub y Function


Para efectuar una llamada a un procedimiento Sub desde otro procedimiento, escriba el nombre del procedimiento e incluya valores para todos los argumentos requeridos. No es necesaria una instruccin Call, pero si la utiliza, los argumentos deben aparecer encerrados entre parntesis. Se puede utilizar un procedimiento Sub para organizar otros procedimientos de forma que sean ms fciles de entender y depurar. En el siguiente ejemplo, el procedimiento Sub Principal efecta una llamada al procedimiento Sub MultiBeep, pasando como argumento el valor 56. Despus de que MultiBeep acaba su ejecucin, el control vuelve a Principal y Principal llama al procedimiento Sub Mensaje. Mensaje presenta en pantalla un cuadro de mensaje; cuando el usuario hace clic en Aceptar, el control vuelve a Principal y Principal termina.
Sub Principal() MultiBeep 56 Mensaje End Sub

Sub MultiBeep(nmbips) For contador = 1 To nmbips Beep Next contador End Sub Sub Mensaje() MsgBox "Es hora de descansar!" End Sub

Llamar a procedimientos Sub con ms de un argumento


El siguiente ejemplo muestra dos formas de llamar a un procedimiento Sub con ms de un argumento. La segunda vez que se llama a CalcuCasa, es necesario utilizar parntesis a ambos lados de los argumentos ya que se utiliza la instruccin Call.
Sub Principal() CalcuCasa 99800, 43100 Call CalcuCasa(380950, 49500) End Sub Sub CalcuCasa(precio As Single, salario As Single) If 2.5 * salario <= 0.8 * precio Then MsgBox "No puede permitirse esta casa." Else MsgBox "Esta casa est a su alcance." End If End Sub

Utilizar parntesis al efectuar llamadas a procedimientos Function


Para utilizar el valor que devuelve una funcin debe asignar la funcin a una variable y encerrar los argumentos entre parntesis, tal y como muestra el siguiente ejemplo.
Respuesta3 = MsgBox("Est contento con su salario?", 4, "Pregunta 3")

Si no est interesado en el valor que devuelve una funcin, puede efectuar la llamada a la funcin de la misma forma que si llamara a un procedimiento Sub. No utilice los parntesis, incluya una lista de argumentos y no asigne la funcin a una variable, todo ello como muestra el siguiente ejemplo.
MsgBox "Tarea concluida!", 0, "Cuadro de tarea"

Precaucin Si en el ejemplo anterior se incluyen parntesis, la instruccin puede producir un error de sintaxis.

Transferir argumentos con nombre


Una instruccin de un procedimiento Sub o Function puede pasar valores a los procedimientos que llama mediante argumentos con nombre. Los argumentos con nombre

pueden aparecer en cualquier orden. Un argumento con nombre se compone del nombre del argumento seguido por dos puntos y un signo igual (:=) y el valor asignado al argumento. El siguiente ejemplo efecta una llamada a la funcin MsgBox utilizando argumentos con nombre que no devuelven ningn valor.
MsgBox Titulo:="Cuadro de tarea", Mensaje:="Tarea concluida!"

El siguiente ejemplo llama a la funcin MsgBox empleando argumentos con nombre. El valor que devuelve la funcin se asigna a la variable respuesta3.
respuesta3 = MsgBox(Titulo:="Pregunta 3", _ Mensaje:="Est satisfecho con su salario?", Botones:=4)

Reglas de asignacin de nombres en Visual Basic


Para dar nombre a procedimientos, constantes, variables y argumentos en un mdulo de Visual Basic han de seguirse las siguientes reglas:

El primer carcter debe ser una letra. En el nombre no se pueden utilizar espacios, puntos (.), signos de interjeccin (!), ni los caracteres @, &, $, #. El nombre no puede tener ms de 255 caracteres de longitud. Como regla general, no se deben usar nombres iguales a los de los procedimientos Function, instrucciones y mtodos de Visual Basic. Al final puede terminar usando las mismas palabras clave que utiliza el lenguaje. Para utilizar una funcin intrnseca del lenguaje, o una instruccin o mtodo, cuyo nombre coincide con uno de los nombres asignados, es preciso identificarlos explcitamente. Para ello se sita delante del nombre de la funcin intrnseca, instruccin o mtodo, el nombre de la biblioteca de tipos asociada. Por ejemplo, si utiliza una variable llamada Left, la nica forma de utilizar la funcin Left es escribiendo VBA.Left. Los nombres no se pueden repetir dentro del mismo nivel de alcance. Por ejemplo, no se pueden declarar dos variables con el nombre edad dentro del mismo procedimiento. Sin embargo, se puede declarar una variable privada edad y una variable de nivel de procedimiento llamada edad dentro del mismo mdulo.

Nota Visual Basic no diferencia entre maysculas y minsculas, pero respeta la forma en que se escriben las instrucciones de declaracin de nombres.

Anda mungkin juga menyukai