0% encontró este documento útil (0 votos)
5 vistas

VBasicScript_QA

VBScript es un lenguaje de scripting derivado de Visual Basic, diseñado para ser interpretado y no compilado, lo que facilita la depuración y el mantenimiento del código. La Programación Orientada a Objetos (POO) se aplica en VBScript, aunque de manera limitada, permitiendo la manipulación de objetos y sus propiedades. El lenguaje permite la creación de variables de tipo Variant, ofreciendo flexibilidad en la gestión de datos, y su sintaxis es insensible a mayúsculas y minúsculas.

Cargado por

MXQ Ventas
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas

VBasicScript_QA

VBScript es un lenguaje de scripting derivado de Visual Basic, diseñado para ser interpretado y no compilado, lo que facilita la depuración y el mantenimiento del código. La Programación Orientada a Objetos (POO) se aplica en VBScript, aunque de manera limitada, permitiendo la manipulación de objetos y sus propiedades. El lenguaje permite la creación de variables de tipo Variant, ofreciendo flexibilidad en la gestión de datos, y su sintaxis es insensible a mayúsculas y minúsculas.

Cargado por

MXQ Ventas
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 93

VBScript

INTRODUCCIÓN
El Visual Basic Script (en adelante VBScript) es un lenguaje de script, directamente derivado de
Visual Basic. Los lenguajes de script son versiones recortadas de otros lenguajes. Dos son los
lenguajes de script que hay en la actualidad: el VBScript (derivado de Visual Basic) y el JavaScript
(derivado de Java). En este temario nos ocuparemos del primero de ellos, siendo el segundo objeto
de estudio en su correspondiente temario.
Decimos que los lenguajes de script se ejecutan interpretados, no compilados. Esto significa
que un código escrito en un lenguaje de script no sufre ninguna transformación previa a su ejecución.
Cada línea de código es traducida a lenguaje máquina justo antes de su ejecución. Después es
ejecutada y la traducción no se conserva en ningún sistema de almacenamiento (como discos, cintas,
etc). Si es necesaria otra ejecución, el intérprete se verá abocado a realizar una nueva traducción de
cada línea de código. Sin embargo el lenguaje Visual Basic, del cual deriva el VBScript, es un leguaje
compilado. Esto significa que un código en Visual Basic sufre un proceso global de traducción a
lenguaje máquina. Todo el código es traducido de una sola vez y el resultado de esa traducción se
almacena en el disco con lea extensión .EXE. Cuando llega el momento de la ejecución, se
ejecuta el código compilado, no el código original del programa (llamado código nativo o código
fuente). Cada sistema tiene sus ventajas e inconvenientes. Veámoslos:

INTERPRETACIÓN
VENTAJAS INCONVENIENTES
• La ejecución se ralentiza, al ser
• El código es cómodo para depurar, ya que no
necesaria la interpretación línea a línea
es necesario volver a compilar tras un cambio.
cada vez.
• No es necesario disponer de un compilador, ya
• El código es visible y puede ser objeto
que el intérprete (que forma parte del
de plagio por parte de otras personas.
navegador) ejecuta el script.
• El usuario tiene acceso al código y
• El mantenimiento es fácil y rápido, por parte del
puede modificarlo, estropeando alguna
autor o de otro programador.
operación.
COMPILACIÓN
VENTAJAS INCONVENIENTES
• El código compilado se ejecuta muy
• Es necesario disponer de un compilador-linkador
rápido, al no ser necesaria una
para el proceso de la compilación.
traducción cada vez.
• El código compilado suele ocupar bastante en
• El código compilado no puede ser
disco, ya que incorpora en el propio código
"abierto" por otras personas. No es
algunas librerías del sistema.
necesario transmitir el código fuente.
• Depurar un programa implica volver a compilar
• El código compilado puede estar,
tras los cambios.
íntegramente, incluido en un solo fichero.

El código en VBScript puede, además, estar diseñado para su ejecución en el lado del cliente o
en el del servidor. La diferencia es que un código que se ejecuta en el lado del servidor no es
visible en el lado del cliente. Este recibe los resultados, pero no el código. Este texto se refiere, por
tanto, al lenguaje VBScript en el lado del cliente.
CAPITULO 1: La orientación a objetos
La tendencia actual en lenguajes de programación de alto nivel es que sean lenguajes
orientados a objetos. La Programación Orientada a Objetos (POO) es una filosofía que se basa en
considerar cada elemento que se usa en un programa como un objeto individual. Así, por ejemplo, el
documento que se está ejecutando es un objeto; cada texto que contiene es un objeto; cada imagen,
cada sonido, cada vídeo son objetos. También lo es la zona de trabajo o ventana donde se ejecuta un
documento o programa. Los objetos tienen una estructura y se organizan de una determinada manera,
como vamos a ver a continuación.

PROPIEDADES
Los objetos tienen una serie de características (se llaman propiedades) que los definen. Por
ejemplo. Un texto es un objeto; el color del texto es una propiedad. Cada objeto tiene un
conjunto de propiedades que le son inherentes y que constituyen, junto con los métodos, la clase del
objeto. Los objetos se hallan clasificados según una jerarquía, en la que hay objetos de mayor nivel y
otros de menor nivel. La jerarquía se refiere a que objetos están contenidos en otros (son propiedad
de otros). Así pues un texto es un objeto propiedad del documento que lo contiene; una celda de
una tabla es un objeto propiedad de la tabla a la que pertenece. Un objeto que contiene a otro es
el objeto padre de aquel al que contiene; el objeto contenido es un objeto derivado de aquel que
le contiene. Un objeto puede tener varios objetos derivados, pero cada objeto sólo tiene un objeto
padre. Un objeto tiene, por defecto, las mismas propiedades (la misma clase) que su objeto padre.
Es lo que se conoce como herencia. Sin embargo algunas o todas esas propiedades pueden
ser alteradas en algún momento por el propio programa o por las acciones del usuario. Las clases
no son inmutables.

METODOS
Los objetos tienen además, unas funciones inherentes que pueden ejecutar para obtener
determinados resultados. Estas funciones propias de los objetos se llaman métodos, para evitar
confusiones con las funciones de usuario (aquellas que el programador escribe e incorpora a su
código). Por ejemplo. El objeto que corresponde al documento activo tiene un método que
permite escribir texto en la pantalla, un objeto de tipo fecha contiene un método que permite obtener
la hora del sistema, etc.

OTROS ASPECTOS DE LA POO(Programación Orientada a Objetos)


Existen dos conceptos importantes en POO. Son las instancias y las implementaciones.
Una instancia es una referencia a un objeto o a una propiedad del mismo. Cuando manejamos
las propiedades de un objeto refiriéndonos a él por una instancia, estamos afectando directamente al
objeto. No a una copia del mismo. Esto es importante porque si modificamos una copia de un
objeto, el objeto original no resulta modificado. Pero si actuamos sobre una instancia a un objeto,
el objeto original resultará afectado. Una implementación es la programación de una función que se
asigna a una clase determinada para que los objetos de esa clase dispongan de esa función como un
método propio.

POO EN VBSCRIPT
El VBScript, como el Visual Basic del que deriva, incorpora la POO, aunque en menor grado que
otros lenguajes actuales. En realidad la estructura de este lenguaje es, hasta cierto punto, un
poco anárquica, vestigio de las antiguas versiones de Basic, que eran totalmente procedimentales.
Otros lenguajes actuales, como Java o C++ son mucho mas rígidos en su concepción. Por
ejemplo. Visual Basic no es Case Sensitive, esto es, no distingue entre mayúsculas o minúsculas
en el código. Esta es sólo una de las características menores del lenguaje. Veremos algunas
más en el siguiente capítulo. En el Apéndice A tenemos un listado de la jerarquía de los objetos, así
como de las propiedades y métodos que acepta cada uno de ellos.
CAPITULO 2: Empezando con VBScript
A lo largo de este temario veremos varios ejemplos de ambos casos que nos disiparán las
dudas que podamos tener al respecto. Y basta ya de cháchara. Empecemos a ver algunas de las
cosas que podemos hacer con nuestro flamante VBScript.

NUESTRO PRIMER EJEMPLO


En los siguientes ejemplos de código verás la forma en que se escribe este lenguaje: En cada
línea física, una instrucción con sus correspondientes parámetros, si los tiene.
Veamos un ejemplo VBScript:

MSGBOX ("Ejemplo de mensaje")

Este código incluye la instrucción MSGBOX ("Cuadro de mensaje"), que genera en pantalla lo
siguiente:

En este ejemplo vemos varias cosas. En primer lugar la estructura de la instrucción en sí. Tal
como hemos dicho, tecleamos en una sola línea la instrucción MSGBOX y los parámetros que recibe.
En este caso solo el mensaje a mostrar, entre paréntesis y comillas ("Cuadro de mensaje"). En
la línea de código no hay nada más. No debe haber nunca mas de una instrucción en la misma línea,
salvo un caso puntual del que hablaremos mas adelante.

En otro orden de cosas vemos que la instrucción MSGBOX genera una caja de aviso en pantalla
con un mensaje y un botón Aceptar. Llegado este punto, la ejecución se detiene hasta que el usuario
pincha el botón. Así nos aseguramos de que verá el mensaje. El mensaje se pone entre
paréntesis y, si se trata de una cadena literal, entre comillas. También se puede poner el
nombre de una variable sin utilizar comillas. En este caso la caja de aviso mostrará el contenido de la
variable. Hablaremos de variables y de tipos de datos un poco mas adelante.
Una última reflexión respecto a este ejemplo. Hemos dicho anteriormente que VBScript
no es sensible al uso de mayúsculas o minúsculas. Esta instrucción hubiera funcionado exactamente
igual si la hubiéramos escrito msgbox o MsGbOx, por ejemplo. El utilizar en nuestro código letras
mayúsculas para las palabras reservadas del lenguaje y minúsculas para lo demás (excepto iniciales,
nombres propios, etc.) obedece a una razón práctica: facilitar la legibilidad del código. El lector
podrá usar este sistema o, si lo prefiere, un editor de textos dotado de Chroma Code. El Chroma
Code es un sistema que hace aparecer las palabras reservadas en un color, los nombres de variables
en otro, las cadenas en otro, etc. Como es lógico, el editor dotado de Chroma Code debe ser
específico para Visual Basic, o no funcionará adecuadamente.
Dada la importancia del hecho de que VBScript no es Case Sensitive (de hecho es uno de los
pocos lenguajes actuales que presenta esta característica), vamos a insistir una vez más en ello,
ilustrándolo con un ejemplo que lo demuestra.
El código es el siguiente:
variable = 1
VARIABLE = 2
MSGBOX (variable)
MSGBOX (VARIABLE)

Este código asigna a la variable llamada variable el valor 1. Después asigna a la


misma variable el valor 2. En las dos cajas de mensaje se obtiene el mismo valor. Así:

al aceptar aparece de nuevo

lo que demuestra que ambas variables son la misma.

COMENTARIOS
En VBScript, como en cualquier lenguaje de programación, se pueden insertar comentarios en
el código con el fin de facilitar la legibilidad y el mantenimiento del mismo. El intérprete ejecuta el
código ignorando los comentarios. Al contrario de lo que muchos programadores novatos piensan,
los comentarios no afectan a la velocidad ni a ningún otro aspecto de la ejecución, por lo que podemos
usarlos libremente, con toda la profusión necesaria para que nuestro código sea fácil de comprender.
Para insertar un comentario, tecleamos la palabra clave REM o bien una comilla simple. Todo
lo que haya en la línea de ahí en adelante será considerado por el intérprete como un comentario.

Por ejemplo:

variable = 1 ' Esto es un comentario.


VARIABLE = 2
MSGBOX (variable) REM Esto también lo es.
MSGBOX (VARIABLE) ' Aunque este formato es mas habitual.
El resultado de este código será, exactamente, el mismo que en el caso anterior. Así pues, en
nuestros programas en VBScript deberemos insertar comentarios siempre que lo consideremos
oportuno, sin excedernos cuando no resulten necesarios, ya que a lo que si afectan los comentarios,
lógicamente, es al tamaño de nuestro archivo.
El argumento de MSGBOX (lo que va entre paréntesis) puede ser simple o compuesto.
Hasta ahora hemos visto ejemplos que mostraban un argumento simple. Vamos a ver ahora
un ejemplo que muestra un argumento compuesto de una cadena alfanumérica y una variable (lo que
se llama una concatenación):

Ejemplo de concatenación

variable = "amigo"
MSGBOX ("Hola, " + variable) ' Ejemplo de concatenación.

Este ejemplo dará como resultado lo siguiente:

En este caso hemos concatenado una cadena alfanumérica con una variable cuyo contenido es
también alfanumérico, y hemos usado para ello e signo + de la suma. Si queremos concatenar
una cadena alfanumérica con una variable cuyo contenido es un valor numérico emplearemos el signo
& (Ampersand), como en el siguiente ejemplo:

Ejemplo del uso de &

variable = 1
MSGBOX ("Eres el Nº " & variable) ' Ejemplo de concatenación.

Este será el resultado:


El signo Ampersand puede emplearse también en el caso de concatenación de cadenas
alfanuméricas con otras cadenas y/o variables de cadena. Por supuesto las concatenaciones pueden
ser múltiples, es decir se pueden concatenar varias variables y/o cadenas alfanuméricas.

CAPITULO 3: Datos y Variables en VBScript


Al contrario que en otros lenguajes de programación, en VB solo existe un tipo general de
datos que se conoce con el nombre de Variant. En otros lenguajes existen datos de tipo String
(Cadena) para almacenar contenidos alfanuméricos, distintos tipos de datos numéricos enteros y en
coma flotante, datos booleanos, etc. Esta característica es muy útil, ya que permite reasignar un valor
de un tipo a una variable de otro tipo. En la actualidad es el único lenguaje de alto nivel que
implementa esta característica Los datos se clasifican en subtipos en función del contenido en un
momento dado. Así se logra toda la funcionalidad de gestión de datos en lenguajes de alto nivel,
pero con una mayor flexibilidad. Para cambiar una variable de un subtipo a otro, es suficiente con
asignarle un dato de diferente tipo. Por ejemplo. El siguiente fragmento de código daría un error
en lenguajes como C++ o Java; sin embargo, en VB es absolutamente correcto:

Variable = 1
' más código
' más código
' más código
' más código
Variable = "cadena"

Mas adelante veremos ejemplos operativos que ilustrarán esta cualidad. En el Apéndice B
tienes un listado completo de los subtipos de datos aceptados por VB (y, por tanto, por VBScript). A lo
largo de este temario veremos ejemplos de uso de los distintos subtipos, que ilustrarán su
funcionamiento. Es necesario recalcar un hecho. Al pertenecer todos los datos a un tipo
único, cuando le damos un valor a un dato se constituye, automáticamente, del subtipo adecuado para
ese valor. Este proceso es totalmente transparente al programador quien, de esta forma, no
necesita preocuparse de declarar un dato como de uno u otro tipo.

VARIABLES
Los datos que se manejan en un lenguaje de programación y cuyo valor puede cambiar
durante la ejecución de un programa se conocen con el nombre genérico de variables. Podemos
concebir una variable como una caja cuyo contenido varía a lo largo de la ejecución. La caja
tiene un nombre que sirve para identificarla y poder utilizar el contenido o valor. Los nombres de
variables deben empezar con una letra y pueden tener letras, números o el signo de subrayado (único
signo de puntuación que se admite en el nombre de una variable). Las letras que formen parte del
nombre de una variable deberán ser de la alfabetización internacional, no de la española o específica
de algún idioma en particular. Así pues, no deberá haber en un nombre de variable letras como la ñ,
letras acentuadas, la ç, etc. Un nombre de variable no deberá contener caracteres especiales (como
p.e. $,%,&,^, etc.). Tampoco deberá contener espacios en blanco, puntos, comas, ni ningún otro
signo de puntuación. Por supuesto, el contenido de una variable alfanumérica SI podrá contener
cualquier cosa que deseemos. Además deberemos tener cuidado de no emplear como nombres
de variable las palabras clave del lenguaje. Los siguientes ejemplos de variables serán correctos en
VBScript y en VB:

Variable = "Esto está en una cadena."


cosa = "*&%$*/87*/&)ñ"
Edad2 = 74
Casado_si_o_no = true
Sin embargo, los siguientes ejemplos ilustran declaraciones de variables que el lenguaje no
aceptará:

72Edad = 28 ' No lo admite por empezar con un número


MsgBox = false ' No lo admite por ser una palabra reservada
Año = 1977 ' No lo admite por contener el nombre una ñ
Pitón& = "Esto no vale" 'No vale por tener una letra acentuada y
'un &

En otro orden de cosas, para usar una variable es necesario dar dos pasos: declararla e
inicializarla. La declaración es la forma de decirle al lenguaje que se va a usar una variable y se
hace con la palabra reservada DIM, seguida del nombre de la variable. Así:

DIM variable

Esto reserva espacio en memoria para la variable. Sin embargo aún no le hemos asignado
ningún contenido. En realidad tiene un contenido de subtipo Null (nulo). La inicialización de
la variable será la que le asigne su primer contenido aunque, como ya sabemos, éste podrá cambiar a
lo largo de la ejecución. La inicialización es, simplemente una asignación. Por ejemplo:

variable = "Cacharro"

La declaración de la variable es opcional. Es decir, si no se hace la declaración de una


variable, ésta se llevará a cabo, de forma automática al realizar la inicialización. Sin embargo es
conveniente realizar las declaraciones de forma manual (escribiendo la instrucción DIM), a fin de
incrementar el nivel de estructuración de nuestros programas y facilitar la legibilidad de los mismos.
La declaración debe ir SIEMPRE antes de la inicialización. Lo correcto es realizar la
declaración de todas las variables al principio de nuestro código. Existe una forma de asegurarnos
de que tengamos que hacer las oportunas declaraciones. Es incluyendo la instrucción OPTION
EXPLICIT en nuestro código. Si incluimos esa línea, el programa no podrá usar ninguna
variable que no haya sido declarada. Nosotros no la habíamos incluido en los ejemplos anteriores, ya
que aún no habíamos hablado de ella, pero la incluiremos a partir de ahora en todos nuestros
ejemplos, ya que constituye, sobre todo, una buena práctica de programación.
Si escribes mal, por ejemplo, la variable "carname" a "carnime", el script creará
automáticamente una nueva variable llamada "carnime". Para evitar que su guión de hacer esto, puede
utilizar la instrucción Option Explicit. Esto obliga a los estados a declarar todas las variables con la
instrucción Dim, pública o privada.
Coloque la instrucción Option Explicit en la parte superior de la secuencia de comandos. Como este:
Option Explicit
Dim carname
carname=some value

MATRICES
Hasta ahora hemos hablado de variables simples, que constituyen lo que se llama un par
nombre-valor, es decir son un nombre de dato, con un valor asignado. Sin embargo no hay
ninguna razón por la que no podamos formar y utilizar estructuras de datos mas complejas. Por
ejemplo. Supongamos que necesitamos gestionar un conjunto de variables que contengan las
edades de los niños de un colegio. Estas variables tienen todas algo en común, así que parece
lógico tratar de establecer una relación de similitud entre ellas. Lo que hacemos es crear una
variables de tabla o matriz. Una matriz es un conjunto de variables que reciben todas el mismo
nombre. En el ejemplo que nos ocupa, este nombre podría ser, por ejemplo, edades.Ahora bien.
Si todas las variables o elementos de la matriz reciben el mismo nombre ¿cómo los
identificamos de forma inequívoca? Para ello usamos un índice. Un índice es un número de orden
que identifica a cada elemento de la matriz. Así pues ya no nos referimos a cada variable con
su nombre, si no con el nombre de la matriz en la que está la variable, seguido del número de orden, o
lugar que ocupa, esa variable en la matriz. Asumimos que los distintos elementos está colocados uno
detrás de otro en fila. El primer elemento se identifica con el número 0, el segundo con el 1, el
tercero con el 2, y así sucesivamente. Bien esta es la teoría. Veamos como utilizamos matrices.
En primer lugar vamos a declarar una matriz de cinco elementos. Para seguir con el ejemplo
anterior, será una matriz donde introduciremos las edades de cinco niños. A la matriz la llamaremos
edades:

DIM edades (4)

El lector pelín avispado ya se habrá dado cuenta de que hemos declarado la matriz con cuatro
elementos, cuando habíamos dicho que la íbamos a declarar con cinco. Ocurre que, como el primer
elemento se le conoce con el número 0, en realidad la instrucción anterior crea sitio para cinco
elementos, del 0 al 4 (0, 1, 2, 3 y 4). Es importante reseñar que una matriz, una vez declarada,
no podrá redimensionarse. Es decir, si hemos creado esta matriz con cinco elementos no podremos
meter mas elementos en la misma. Esto no supone ningún problema si necesitamos menos de cinco
elementos ya que, los que no necesitemos, podemos dejarlos vacíos (Null), pero no podremos usar
NUNCA mas de cinco elementos en esa matriz. Así pues, una matriz debe ser declarada con el
número MÁXIMO de elementos que deberá contener. Si no sabemos cuantos elementos podrá
contener una matriz como máximo, no podremos usar matrices.
Bien. Ahora veamos como asignar contenidos a una matriz. El nombre de un elemento
de una matriz está compuesto por el nombre de la matriz y el número de índice del elemento, este
último entre paréntesis. Por lo tanto, la asignación de un valor a un elemento se realizará de la
siguiente manera:

Edades (0) = 14

Las matrices, también llamadas arrays, son una herramienta muy potente y versátil.
Puedes, por ejemplo, asignarle un contenido alfanumérico a un elemento de la matriz y un
contenido numérico a otro elemento de la misma matriz. Sin embargo esta cualidad no es de uso
muy frecuente, por la propia naturaleza. Recordemos que una matriz se emplea para almacenar
un conjunto de datos relacionados entre sí. Mira el siguiente ejemplo:

Uso de matrices

DIM matriz (1)


matriz (0) = "A ver que pasa"
matriz (1) = 6 * 3 ' El asterisco se usa como signo de multiplicación.
MSGBOX (matriz (0))
MSGBOX (matriz (1))

Este código da como resultado lo siguiente:


Al pulsar el botón Aceptar aparecerá lo siguiente:

Lo que nos demuestra que se respeta el contenido de cada elemento de la matriz.


Otra cosa respecto de las matrices. Hasta ahora hemos visto matrices que son, por así
decirlo, una fila de elementos. Pero puede haber matrices de varias filas, de forma que
constituyan un cuadro de elementos. Son las llamadas matrices bidimensionales. De la misma forma
que un elemento de una matriz unidimensional se identifica por un índice que se refiere a su posición
en la fila, un elemento de una matriz bidimensional se identifica por dos índices. Un indica la
columna y otro la fila que ocupa el elemento en la tabla. La forma de declarar una matriz
bidimensional es la siguiente:

DIM matriz_bidimensional (10,20)

Ten en cuenta que todo lo que hemos dicho de matrices unidimensionales es válido también
para matrices bidimensionales, sólo que en este caso entre los paréntesis aparecen dos índices,
separados por una coma.
Para asignar un contenido a un elemento de una matriz bidimensional se emplea el siguiente
formato:

matriz_bidimensional (4,7) = "Esto es un elemento de una matriz"

Por supuesto se pueden usar matrices de mas de dos dimensiones (hasta un máximo de 60
dimensiones) indicando entre paréntesis un índice por cada dimensión. En la práctica se usan, como
mucho, matrices de cuatro dimensiones.
Por lo demás, recuerda que con los elementos de una matriz se pueden efectuar las mismas
operaciones que con variables simples. Hasta ahora solo hemos visto unas pocas posibilidades.
Veremos más en próximos capítulos.
CAPITULO 4: Entrada y salida de datos
Uno de los aspectos mas importantes y llamativos de un lenguaje de programación es la
comunicación con el usuario. Esta comunicación se establece en dos direcciones fundamentales: la
salida de datos por pantalla y la introducción de datos por teclado. En este capítulo vamos a ver los
aspectos mas básicos de ambas, de forma que ya podremos establecer unos canales de comunicación
con el usuario. Mas adelante en éste mismo temario veremos otras técnicas que dotarán a nuestra
código de dinamismo e interactividad.

SALIDA POR PANTALLA


Hemos visto hasta ahora una manera de obtener en pantalla algunos resultados. La
instrucción MSGBOX () Nos permite sacar una cadena alfanumérica, el contenido de una variable o
combinaciones de ambas en un cuadro don el aspecto típico de Windows. Este cuadro está dotado de
un botón Aceptar que el usuario debe pulsar para que prosiga la ejecución. Además, como sin duda
has podido comprobar, al pulsar el botón el cuadro desaparece.
Bien. Supongamos que lo que queremos ahora es obtener un texto en la pantalla, sin
necesidad de ningún botón, ni cuadro, ni detención de la ejecución, y además que no desaparezca.
Hemos dicho que VBScript es un lenguaje orientado a objetos. Y el documento activo (programa
en ejecución) es un objeto llamado, precisamente, document. Este objeto tiene un método de
escritura, llamado Msgbox(), que nos permite escribir en la pantalla. Si esto te resulta un poco arcano(
algo muy difícil de conocer por lo recóndito, secreto o desconocido ), revisa la primera parte de este
temario que versa sobre programación orientada a objetos y mira el Apéndice A.
Bien; veamos un ejemplo de lo que acabamos de comentar.

Uso de Msgbox()

msgbox("Hola desde VBScript" )

El resultado de este código sería ver en pantalla la frase Hola desde VBScript. Como en el
caso de MSGBOX, la impresión puede ser una combinación de cadena /s alfanumérica /s y/o variable
/s, y las concatenaciones se rigen por las mismas normas que ya conocemos.

ENTRADA POR TECLADO


Una de las formas mas atractivas de introducir datos simples por teclado es la instrucción
INPUTBOX (). Esta instrucción abre una caja de diálogo, con el siguiente aspecto:
En esta caja distinguimos lo siguiente:
1.La pregunta que se le hace al usuario. Cuando se espera que el usuario introduzca algo por
teclado, suele ser la respuesta a alguna pregunta. En este caso la pregunta es "¿Es usted
español?".
2.Una línea en blanco (normalmente llamada "Caja de texto" donde el usuario introduce su
respuesta. Esta caja de texto puede aparecer vacía o con una posible respuesta por defecto.
En este último caso la respuesta por defecto aparece seleccionada (texto blanco sobre fondo
azul).
3.Un botón de Aceptar. Una vez introducida la respuesta el usuario pulsa la tecla INTRO del
teclado o el botón Aceptar para validarla. Llegados a este punto conviene aclarar que, de
forma similar a como ocurre con MSGBOX, la ejecución del programa queda detenida hasta
que el usuario responde a la pregunta.
4.Un botón Cancelar. Este es nuevo. No lo habíamos visto hasta ahora. Se usa
el botón si el usuario quiere dejar la pregunta sin responder y continuar adelante con la
ejecución del programa.
5.En la parte superior de la ventana, y a todo lo ancho de la misma, aparece una banda azul
con texto blanco. Esta banda es la barra de título.

Bien. Conozcamos la sintaxis de INPUTBOX (). Es la siguiente:

INPUTBOX (Pregunta, Título, Respuesta, pos x, pos y)

Como vemos esta instrucción puede recibir varios parámetros separados por comas. Son los
siguientes:

1.Pregunta. Es la pregunta que se le formula al usuario y a la que deberá responder.


2.Título. Es un literal que aparecerá en la barra de título.
3.Respuesta. Es la respuesta por defecto que queremos ofrecerle al usuario.
4.pos x - pos y. Son las coordenadas donde queremos que se sitúe la esquina superior
izquierda de la caja de diálogo. Estas coordenada se expresan en twips ( (TWentIeth of a
Point) es un punto es una unidad de medida de pantalla, textos, fuentes o impresión,
comúnmente utilizada o de más uso. Un twip equivale a 1/1440 de pulgada, y un punto es 1/72
de pulgada por lo tanto es la vigésima parte de un punto ), que es una unidad de medida propia
de Windows. Para coger soltura con esta medida lo mejor es que practiques con distintos
valores.

En el caso de la caja de diálogo que hemos visto al principio de esta página, la instrucción que
la genera es:

resp =INPUTBOX ("¿Es usted español?", "Nacionalidad", "Si", 1500,1500)

En esta instrucción vemos que la respuesta del usuario se almacena en una variable llamada
resp para su posterior uso. El único parámetro obligatorio es el primero, es decir, el enunciado de la
pregunta. Los demás son opcionales. Supongamos que no queremos, por ejemplo, que
aparezca el titulo Nacionalidad. En ese caso teclearemos la instrucción de la siguiente manera:

resp = INPUTBOX ("¿Es usted español?", , "Si", 1500, 1500)


El resultado será:

Si el usuario pincha el botón cancelar, la variable a la que se asigna la repuesta quedará con el
valor Null.
En principio, todas las respuestas que el usuario introduzca por este sistema son procesadas
como cadenas alfanuméricas. Mas adelante veremos que ocurre si se espera del usuario una respuesta
numérica, de fecha, etc.

CAPITULO 5: Condicionales
Cuando se introduce una respuesta a una pregunta, o cuando se obtiene un valor como
resultado de una operación, o en otras muchas situaciones, es necesario que el código "decida" si va a
hacer una cosa u otra (o ninguna) con lo que se ha obtenido. Por ejemplo. Si a la pregunta de si el
usuario es español éste respondió afirmativamente, habrá que preguntarle cual es su numero del DNI.
En caso contrario habrá que preguntarle por su número de pasaporte. Hay varias posibilidades
de establecer condicionales durante la ejecución de un programa.
Veámoslas:

SENTENCIAS IF... THEN... ELSE


La sentencia IF significa, en castellano si (condicional, no afirmativo). La palabra THEN
significa entonces o como consecuencia. La palabra ELSE se podría traducir por en caso
contrario. Cuando queremos que el programa realice una o mas operaciones si se cumple una
condición, podemos usar una estructura básica como la del siguiente ejemplo:
Condicionales

edad = INPUTBOX ("¿Es usted mayor de edad?",,"Si")


IF (edad = "Si") THEN
MSGBOX ("Usted ya puede votar")
END IF

Este código muestra la siguiente ventana en la pantalla:


Si el usuario responde Si (Aceptando la respuesta por defecto), el programa muestra el
siguiente resultado:

En caso de que el usuario responda otra cosa o pinche en cancelar el programa no muestra
ningún resultado. Como hemos visto, la condición va entre paréntesis. Esto no es obligatorio en
VBScript, pero facilita la legibilidad del código. Nosotros lo haremos siempre así, por sistema.
Vamos a sofisticar un poco mas nuestro programa:

Condicionales

edad = INPUTBOX ("¿Es usted mayor de edad?",,"Si")


IF (edad = "Si") THEN
MSGBOX ("Usted ya puede votar")
ELSE
MSGBOX ("Usted aún no puede votar")
END IF

En caso de una respuesta diferente a Si por parte del usuario, ahora veremos en pantalla lo
siguiente:

Como vemos, un condicional va encerrado entre las instrucciones IF y END IF. A continuación
de la palabra clave IF, en la misma línea de código aparece la condición que determina la ejecución de
unas instrucciones o de otras. Después de la palabra clave THEN aparecen las instrucciones que han
de ejecutarse si se cumple la condición. A continuación de la palabra clave ELSE aparecen las
instrucciones que han de ejecutarse si la condición no se cumple. Todo el bloque del condicional
termina con las palabras clave END IF. Por lo tanto, la estructura general de este tipo de condicionales
es la siguiente:

IF (condición) THEN
BLOQUE DE INSTRUCCIONES 1
ELSE
BLOQUE DE INSTRUCCIONES 2
END IF
CONDICIONALES ANIDADOS
El ejemplo anterior evalúa una condición. Si se cumple la condición hace una cosa y si no se
cumple hace otra. Ahora supongamos la siguiente estructura:

IF (condición_1) THEN
BLOQUE DE INSTRUCCIONES 1
ELSE
IF (condición_2) THEN
BLOQUE DE INSTRUCCIONES 2
ELSE
BLOQUE DE INSTRUCCIONES 3
END IF
END IF

Esta estructura es un poco mas compleja. Si se cumple la condición_1 ejecutará el BLOQUE DE


INSTRUCCIONES 1. Si no se cumple evalúa la condición_2. En caso de cumplirse ésta, ejecuta
el BLOQUE DE INSTRUCCIONES 2. Solo en caso de que las dos condiciones sean falsas se ejecutará
el BLOQUE DE INSTRUCCIONES 3.

Veamos un ejemplo:

Condicionales anidados
edad = INPUTBOX ("¿Cuál es su edad?",,"0")
IF (edad < 18) THEN
MSGBOX ("Eres un jovenzuelo")
ELSE
IF (edad > 65) THEN
MSGBOX ("Usted ya está jubilado")
ELSE
MSGBOX ("Usted es adulto")
END IF
END IF

En primer lugar una observación. En el capítulo anterior decíamos que INPUTBOX () recibía
un valor alfanumérico, aunque aquí recibe un valor numérico (la edad) y lo procesa sin problemas
como un número. Esto es posible gracias a la propia estructura de datos del lenguaje (ver el
capítulo 3: Datos y variables en VBScript).
Bien. Veamos lo que ocurre al ejecutar el código anterior. En primer lugar se le pide al usuario
que introduzca su edad. La respuesta por defecto es 0. Una vez que la ha introducido y ha
pulsado en Aceptar, se comprueba si la edad es menor que 18. Para ello se usa el operador <
(mira el Apéndice C: Operadores en VBScript). En caso de que sea así, se muestra el siguiente
mensaje:
En caso de no cumplirse la condición, se comprueba si la edad es mayor que 65. Si se cumple
esta condición se muestra el siguiente mensaje:

Solo en caso de no cumplirse ninguna de las dos condiciones anteriores se muestra el último
mensaje:

Hay que resaltar que las condiciones son excluyentes entre sí. Es decir. En el
momento que alguna de ellas resulte ser cierta, se ejecuta el bloque de instrucciones correspondiente
y se abandona el condicional. Por ejemplo. Si la primera condición es cierta, ya no se evaluará la
segunda, como es lógico.

CONDICIONES COMPUESTAS
Supongamos que solo queremos evaluar si la edad del usuario está entre 18 y 65 años. Solo
nos interesa saber si está o no en ese rango de edad. Veamos un ejemplo:

Condiciones compuestas

edad = INPUTBOX ("¿Cuál es su edad?",,"0")


IF (edad > 18 AND edad < 65) THEN
MSGBOX ("Usted es un adulto en edad laboral")
ELSE
MSGBOX ("Usted no está en edad laboral")
END IF

Aquí vemos que la condición son, en realidad dos condiciones unidas por el operador lógico
AND (Mira el Apéndice C). Esta línea se podría leer como "Si la edad es menor que 18 y la edad es
menor que 65 entonces...".

De esta forma se evalúan condiciones múltiples.


MAS SOBRE CONDICIONES MULTIPLES
Cuando hay que evaluar muchas condiciones no se deben utilizar condicionales anidados:
resulta antiestético, por no decir chapucero. Para ello se utilizan las sentencias SELECT CASE y END
SELECT. Veamos un ejemplo:

Condiciones múltiples

OPTION EXPLICIT
DIM cantidad
cantidad = 3

SELECT CASE cantidad


CASE 1:
MSGBOX ("La cantidad vale 1")
CASE 2:
MSGBOX ("La cantidad vale 2")
CASE 3:
MSGBOX ("La cantidad vale 3")
CASE 4:
MSGBOX ("La cantidad vale 4")
CASE 5:
MSGBOX ("La cantidad vale 5")
CASE 6:
MSGBOX ("La cantidad vale 6")
CASE ELSE:
MSGBOX ("La cantidad no está entre 1 y 6")
END SELECT

El resultado será el siguiente:

Supongamos que la línea cantidad = 3 la sustituimos por cantidad = 7. El resultado sería el


siguiente.
CAPITULO 6: Bucles 1ª parte
En cualquier lenguaje de programación se nos plantea, en muchas ocasiones, la necesidad de
realizar una operación mas de una vez, en un proceso reiterativo. Esa operación puede realizarse un
número determinado o indeterminado de veces. En VBScript tenemos varias estructuras que nos lo
permiten. Vamos a conocerlas todas y así sabremos como elegir una u otra según las circunstancias.

BUCLES FOR... NEXT


Esta estructura se emplea cuando es necesario repetir un bloque de operaciones un número
determinado de veces. Un bucle FOR ... Next emplea para ello un variable de control que actúa como
contador de las veces que se ha procesado el bucle. La variable que actúa como contador parte de un
valor_inicial. Cada vez que se ejecuta el BLOQUE DE SENTENCIAS incluido en el bucle la variable de
contador se incrementa en una unidad. Opcionalmente el incremento puede ser diferente de la unidad,
incluyendo el parámetro STEP seguido del índice de incremento que deseemos. Cuando el contador
alcanza el valor_final se deja de ejecutar el bucle y se sigue ejecutando el programa a partir de la
instrucción que va detrás de NEXT.
La estructura general es la siguiente:

FOR contador = valor_inicial TO valor_final STEP incremento


BLOQUE DE SENTENCIAS
NEXT
Veamos unos ejemplos de uso.

Bucle For...Next

OPTION EXPLICIT
DIM contador
FOR contador = 0 TO 5
msgbox(contador & vbNewLine )
NEXT
msgbox("Se acabó la cuenta" )

El resultado de la ejecución de éste código será el siguiente:


0
1
2
3
4
5
Se acabó la cuenta

Bien. Ahora supongamos el siguiente ejemplo de código:


Bucle For...Next

OPTION EXPLICIT
DIM contador
FOR contador = 0 TO 10 STEP 2
msgbox(contador & vbNewLine )
NEXT
msgbox("Se acabó la cuenta")

El resultado será:
0
2
4
6
8
10
Se acabó la cuenta

Como vemos en el último ejemplo, la cuenta se ha realizado de dos en dos por la coletilla STEP
2 que hemos añadido a la instrucción FOR.

BUCLES DO WHILE...LOOP
Este tipo de bucles se emplean para efectuar (DO) una operación un número indeterminado de
veces mientras (WHILE) se cumpla una condición. Su estructura general es la siguiente:
DO WHILE (condición)
BLOQUE DE INSTRUCCIONES
LOOP
El BLOQUE DE INSTRUCCIONES, contenido entre las líneas DO y LOOP se ejecutará mientras se
cumpla la condición. Supongamos que ha llegado la hora de pedirle al usuario una palabra clave para
continuar ejecutando un programa. Esta palabra será, por ejemplo, AUTORIZADO. Veamos como lo
haríamos:

Bucle Do...While

OPTION EXPLICIT
DIM clave
clave = ""
DO WHILE (clave <> "AUTORIZADO")
' Ejecuta mientras la clave no es igual a <> AUTORIZADO
clave = INPUTBOX ("Teclea la clave:")
LOOP
MSGBOX ("La clave ya es correcta")
Este ejemplo mostrará el siguiente cuadro de diálogo y no seguirá adelante hasta que se
introduzca la palabra AUTORIZADO. Si se introduce mal la clave, seguirá mostrando la pregunta
indefinidamente.

Una vez introducida la clave correctamente el programa continuará su ejecución mostrando lo


siguiente:

Bien. Veamos más posibilidades.


Capítulo 6: Bucles 2ª parte
BUCLES DO UNTIL ... LOOP
Este bucle funciona de manera muy similar al anterior, con la salvedad de que el BLOQUE DE
INSTRUCCIONES se ejecuta hasta que (UNTIL) se cumple la condición. Cuando se cumple la condición
deja de ejecutarse el bucle. La estructura general es la siguiente:

DO UNTIL (condición)
BLOQUE DE INSTRUCCIONES
LOOP

Como siempre, la mejor manera de entender el funcionamiento es con un ejemplo.


Supongamos el mismo caso de antes. Se tiene que pedir la clave mientras no se introduzca
correctamente.
Veamos como hacerlo.

Bucle Do...Until

OPTION EXPLICIT
DIM clave
clave = ""
DO UNTIL (clave = "AUTORIZADO")
' Ejecuta hasta que la clave es igual a AUTORIZADO
clave = INPUTBOX ("Teclea la clave:")
LOOP
MSGBOX ("La clave ya es correcta")

El resultado es idéntico al del ejemplo anterior.

BUCLES WHILE ... WEND


Estos bucles son un vestigio de los primeros tiempos de BASIC. Hoy día han sido
sustituidos por los bucles DO WHILE ... LOOP, cuyo funcionamiento es idéntico. Sin embargo, los
intérpretes actuales todavía los soportan como complemento, por aquellos programadores
acostumbrados al modelo antiguo.
Su estructura general es la siguiente:

WHILE (condición)
BLOQUE DE SENTENCIAS
WEND

De todas formas, me permito aconsejar al lector que no se acostumbre a usar este formato de
bucle, ya que es posible que futuras versiones del intérprete dejen de contemplarlo.

ROMPIENDO BUCLES
En ocasiones es necesario interrumpir de manera forzada la ejecución de un bucle, por ejemplo
si se produce una situación que aconseje la continuación del programa ignorando el resto del proceso
del bucle. Para ello se emplea la instrucción EXIT. Esta instrucción presenta tres formatos
distintos, según el tipo de bucle en que se implemente. Si queremos causar la ruptura de un bucle
FOR... NEXT, utilizaremos EXIT FOR. Para romper un bucle DO WHILE ... LOOP o un bucle DO
UNTIL ... LOOP utilizaremos la instrucción EXIT DO. Si lo que queremos es romper un bucle WHILE ...
WEND usaremos EXIT WHILE. Veamos un ejemplo práctico. Vamos a suponer que estamos
contando números y queremos que la cuenta se interrumpa cuando el cuadrado del número por el que
vamos sea mayor que 99. Veamos el siguiente código:
Salir de un bucle

OPTION EXPLICIT
DIM num
DIM cuad
num = 0
cuad = 0
DO WHILE (num < 1000)
num = num + 1
cuad = num * num
IF (cuad > 99) THEN
EXIT DO
END IF
msgbox("El cuadrado de " & num & " es " & cuad & vbNewLine)
LOOP
msgbox("Se acabó el bucle.")

El resultado del código anterior es el siguiente:

El cuadrado de 1 es 1
El cuadrado de 2 es 4
El cuadrado de 3 es 9
El cuadrado de 4 es 16
El cuadrado de 5 es 25
El cuadrado de 6 es 36
El cuadrado de 7 es 49
El cuadrado de 8 es 64
El cuadrado de 9 es 81
Se acabó el bucle.

Este ejemplo ilustra el funcionamiento de la instrucción EXIT DO. Los otros dos formatos
actúan de manera similar. La instrucción EXIT no es de uso muy frecuente, ya que casi siempre se
pueden encontrar soluciones mas elegantes, pero conviene conocerla.
CAPITULO 7: Funciones y Procedimientos
En VBScript existen tres formas básicas de ejecución. La primera de ellas se conoce con
el nombre de ejecución inmediata. Es un código VBScript insertado dentro de un código
HTML y que se ejecuta allí donde está insertado. Es la forma de ejecución de todos los ejemplos
que hemos visto hasta ahora en este temario. Hay otras dos formas de ejecución en las que el
código se carga en memoria en segundo plano, sin ejecutarse hasta que es invocado en algún punto
concreto de la página. Estas dos formas de ejecución se conocen con el nombre de funciones y
procedimientos. Dada su propia naturaleza, el código de las funciones y los procedimientos suele
ir al principio de la página, normalmente dentro de la cabecera. Ahí se cargan en memoria pero no se
ejecutarán hasta que sean invocados desde algún punto de la página. Esto se hace así porque es
importante haberlas definido (cargado en memoria) antes de invocarlas. Vamos a ver como funcionan
ambos sistemas de ejecución.

FUNCIONES
Una función es un fragmento de código que recoge unos parámetros (valores que se le pasan
para su ejecución) y devuelve un resultado. El código de la función se incluye entre las
palabras clave FUNCTION y END FUNCTION. Todo lo que haya entre estas dos líneas será
considerado como parte de la función. Además, a la función se le asigna un nombre, por el que
se la invocará desde el código y será el nombre del resultado que devuelva. Así pues, en
VBScript una función sólo puede devolver un resultado. Veamos un ejemplo que lo dejará todo
mas claro. Vamos a escribir un programa que pida dos números por teclado y los sume entre sí:

Funciones

' En la siguiente línea empieza la función.


FUNCTION sumar (sumando_1, sumando_2)
sumar = (CLNG(sumando_1) + CLNG(sumando_2))
END FUNCTION
' Ya se ha acabado la función.

OPTION EXPLICIT
' A continuación se definen las tres variables que se usarán.
' La variable resultado almacenará el resultado que devuelva la función.
' Las variables sum1 y sum2 almacenan los valores que se pasarán
' como parámetros a la función.
DIM sum1
DIM sum2
DIM resultado

sum1 = 0
sum2 = 0
resultado = 0

' El siguiente bloque pide por teclado el primer sumando, comprobando que
' se trate de un numero positivo.
DO UNTIL (sum1 > 0)
sum1 = INPUTBOX ("Introduzca el primer sumando:")
LOOP
' El siguiente bloque pide por teclado el segundo sumando, comprobando que
' sea también un número positivo.
DO UNTIL (sum2 > 0)
sum2 = INPUTBOX ("Introduzca el segundo sumando:")
LOOP
resultado = sumar (sum1, sum2)
MSGBOX ("El resultado es " & resultado)
El resultado de este código es que pide al usuario que introduzca que introduzca un número
que será el primer sumando de la suma, como ya conocemos:

En este caso hemos introducido un 5. A continuación se nos pide de igual modo el segundo
sumando:

Como ves hemos introducido un 7. El programa invoca entonces a la función de la suma a la


que hemos llamado sumar. Esta función devuelve un resultado que es mostrado en la siguiente
forma:

Vamos a entrar en detalle en el funcionamiento de este proceso. En primer lugar deberemos


reparar en que el nombre de las variables que se pasan a la función como parámetros (también
llamados argumentos de la función) no tiene por que coincidir con los nombres que se le dieron a
los parámetros en el momento de definirla. Si te fijas verás que, en la definición de la función se han
incluido como parámetros sumando_1 y sumando_2, tal como vemos en la correspondiente línea
de código:

FUNCTION sumar (sumando_1, sumando_2)

Sin embargo en la invocación se usan las variables sum1 y sum2:

resultado = sumar (sum1, sum2)


Esto es así porque el sistema coge la primera variable de la invocación y la asigna al primer
argumento de la función; la segunda variable de la invocación la asigna al segundo argumento de la
función, y así sucesivamente si hubiera que pasar mas parámetros. De esta forma, para invocar una
función nos basta con saber el número de parámetros que es necesario pasarle. Los parámetros deben
estar encerrados entre paréntesis y separados por comas, tanto los de la definición como los de la
invocación. Dentro de la definición de la función vemos también la siguiente línea:

sumar = (CLNG(sumando_1) + CLNG(sumando_2))

En ella apreciamos que el resultado que devolverá la función, sale de ésta con el mismo
nombre que la función (sumar), aunque luego se alojará en la variable resultado, que es la que
invoca a la función.
Además observamos la palabra clave CLNG (). Tiene todo el aspecto de ser una función que se
aplica a sumando_1 y a sumando_2. Sin embargo en nuestro código no aparece definida en
ninguna parte. Esto es así porque CLNG () no es una función de usuario, sino una función
del lenguaje y, por lo tanto, su comportamiento está definido en el intérprete. Hablaremos de las
funciones del lenguaje en el apartado del mismo nombre, dentro de éste capítulo. De momento nos
basta saber que si no aplicamos esta función, el resultado no es el que esperamos (la suma aritmética
de los parámetros), si no la concatenación de ambos como si fueran cadenas alfanuméricas. Una
última consideración acerca de las funciones. Es posible definir y utilizar funciones que no reciban
ningún argumento, pero siempre devuelven un resultado.
CAPITULO 7: Procedimientos
Un procedimiento se parece muchísimo en su concepción y uso a una función, con la diferencia
fundamental de que no devuelve ningún resultado y algunas otras diferencias menores, que veremos
en este apartado. En primer lugar los procedimientos se incluyen entre las palabras clave SUB y
END SUB. Para invocar al procedimiento, simplemente teclearemos su nombre en una línea de
comando, como si fuera una instrucción.
Veamos un ejemplo:

Procedimientos

SUB doble_mensaje()
MSGBOX ("Este es el primer mensaje.")
MSGBOX ("Este es el segundo mensaje.")
END SUB

doble_mensaje

El resultado sería, como cabe esperar, que primero visualizaremos el mensaje:

Y a continuación, tras pulsar el botón ACEPTAR, veremos:

Tras pulsar el botón aceptar, finaliza la ejecución. Como vemos, el procedimiento no


devuelve ningún resultado. Simplemente ejecuta una acción. En este caso, además hemos visto
que se trata de un procedimiento que no recibe ningún parámetro. Por eso, en la definición aparece el
nombre del procedimiento con dos paréntesis sin nada en medio y en la invocación aparece,
simplemente, el nombre del procedimiento. Si hubiera que pasar parámetros al procedimiento,
existen dos formas de realizar la invocación. La primera es la mas sencilla. El nombre del
procedimiento seguido de los parámetros necesarios, separados por comas y sin paréntesis.
Así:

procedimiento parám1, parám2, parám3, ... , parámN

La segunda forma es mas elegante y mas adecuada al concepto de programación estructurada.


Consiste en anteponer al nombre de procedimiento la palabra reservada CALL y encerrar la lista
de parámetros, separados por comas, entre paréntesis.
Así:

CALL procedimiento (parám1, parám2, parám3, ... , parámN)


Modos de llamar a un procedimiento

SUB cuento (final)


IF (final = "Bonito") THEN
MSGBOX ("...y fueron felices y comieron perdices.")
END IF
IF (final = "Feo") THEN
MSGBOX ("...les echaron del trabajo y les embargaron el piso.")
END IF
END SUB

cuento "Bonito"
CALL cuento ("Feo")

El resultado de la ejecución de este programa es el siguiente:

Y, al pulsar Aceptar veremos lo siguiente:

Con lo que termina la ejecución del programa. Con esto hemos visto como operan las funciones
de usuario y los procedimiento.

RUPTURAS
Al igual que sucedía con los bucles, es posible interrumpir la ejecución de una función de
usuario o de un procedimiento y devolver el control de la ejecución al código llamante. Para ello se
utiliza, una vez más, la instrucción EXIT. Si se trata de una función de usuario emplearemos EXIT
FUNCTION. Si se trata de un procedimiento, emplearemos EXIT SUB. De todas formas no es
bueno acostumbrarse a usar estas rupturas forzadas, porque se acaba abusando de ellas y escribiendo
códigos chapuceros. En realidad se puede resolver casi cualquier problema sin necesidad de
rupturas. Solo deben incluirse como solución de emergencia si se genera algún error indeseado,
por ejemplo. Aclarado esto, es el momento adecuado para hablar de funciones del lenguaje.
CAPITULO 7: Funciones del lenguaje
En VBScript existe una librería de funciones predefinidas que el usuario puede emplear si lo
considera conveniente. Al estar predefinidas no es necesario hacer nada para cargarlas en memoria.
Se cargan, automáticamente, con el intérprete. Solo es necesario invocarlas donde se
necesiten. Estas funciones se clasifican en grupos en base al tipo de datos con el que se emplean.
Veamos cuales son y que hacen:

ABS (número)
Recibe como argumento un número (o variable que lo contiene) y devuelve el mismo número
sin signo. No produce ningún efecto con números positivos y elimina el signo en los negativos.

msgbox(Abs(1)& vbNewLine &Abs(-1))

1
1

ARRAY (Elemento1, Elemento2, ... , Elemento N)


Devuelve una matriz con los elementos que recibe, separados por comas, como argumento.
Si no se le pasan argumentos, devuelve una matriz de cero elementos.

a=Array(5,10,15,20)
msgbox(a(3))

20
FILTER (inputstrings,value[,include[,compare]])
La función Filter devuelve una matriz de base cero que contiene un subconjunto de una matriz
de cadenas con base en un criterio de filtro.
Nota: -Si no se encuentran coincidencias del parámetro valor, la función Filter devuelve una
matriz vacía.
-Si los inputstrings parámetro es nulo o no es una matriz unidimensional, se producirá
un error.
inputstrings: Obligatorio. Una matriz unidimensional de cadenas que desea buscar
value: Requerido. La cadena a buscar
include: Opcional. Un valor booleano que indica si se debe devolver las sub-cadenas que
incluyan o excluyan valor. Verdadero devuelve el subconjunto de la matriz que contiene el valor como
una sub-cadena. Falsos devuelve el subconjunto de la matriz que no contiene valor como una sub-
cadena. Predeterminado es True.
compare: Opcional. Especifica la comparación de cadenas para su uso.
Puede tener uno de los siguientes valores:
0 = vbBinaryCompare - Realiza una comparación binaria
1 = vbTextCompare - Realiza una comparación textual

a=Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturda
y")
b=Filter(a,"S")
for each x in b
msgbox(x & vbNewLine)
next

Monday
Tuesday
Wednesday
Thursday
Friday

a=Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturda
y")
b=Filter(a,"S",True,1)
for each x in b
msgbox(x & vbNewLine)
next

Sunday
Tuesday
Wednesday
Thursday
Saturday
ASC (carácter)
Devuelve el valor ASCII del carácter que recibe como argumento. Si recibe una cadena,
devuelve el código ASCII del primer carácter de la misma. Si recibe un dato Null, devuelve un valor
Null.

msgbox(Asc("A")& vbNewLine)
msgbox(Asc("a")& vbNewLine)
msgbox(Asc("F")& vbNewLine)
msgbox(Asc("f")& vbNewLine)
msgbox(Asc("2")& vbNewLine)
msgbox(Asc("#")& vbNewLine)

65
97
70
102
50
35

ATN (número)
Recibe un número (o variable que lo contiene) que representa a un ángulo en radianes y
devuelve el arco tangente de ese ángulo.

msgbox(Atn(89)& vbNewLine & Atn(8.9))

1.55956084453693
1.45890606062322

CBOOL (número)
Recibe como argumento un número (o variable que lo contiene y devuelve un valor lógico.
Falso si el número es 0 y verdadero en otro caso.

msgbox(CBool(5) & vbNewLine &CBool(0) & vbNewLine & CBool(-5))

True
False
True

CBYTE (número)
Recibe como argumento un número (o variable que lo contiene) y lo convierte a un número en
formato Byte.

Msgbox (CByte(0)& vbNewLine & CByte(56.8)& vbNewLine


&CByte(123.2)& vbNewLine & CByte(255))

0
57
123
255
CCUR (número)
Recibe como argumento un número (o variable que lo contiene) y lo convierte a un número en
formato Currency.

msgbox(CCur(5.9555555555555) & vbNewLine & CCur(30))

5.9556
30

CDATE (cadena)
Recibe como argumento una cadena alfanumérica representando una fecha y la convierte en
un dato se subtipo DATE.

d=CDate("April 22, 2010") ' Cómo convertir una cadena a una fecha

d=CDate(#4/22/10#) 'Cómo convertir números con separadores a una fecha

d=CDate("3:18:40 AM") 'Cómo utilizar CDate para convertir una cadena a un


'objeto de tiempo

CDBL (número)
Recibe como argumento un número (o variable que lo contiene) y lo transforma a un número
en formato Double.

msgbox(CDbl(134.345)& vbNewLine & CDbl(14111111113353355.345455))

134.345
1.41111111133534E+16

CHR (número)
Devuelve el carácter asociado al código ASCII pasado como argumento. El número deberá
estar comprendido entre 0 y 255.

msgbox(Chr(65) & vbNewLine & Chr(66) & vbNewLine & Chr(67) & vbNewLine &
Chr(97) & vbNewLine & Chr(98) & vbNewLine & Chr(99))

A
B
C
a
b
c
CINT (número)
Recibe como argumento un número (o variable que lo contiene) y lo transforma en un dato con
formato Int.

msgbox(CInt("300")& vbNewLine & CInt(36.75) & vbNewLine & CInt(-67))

300
37
-67

CLNG (número)
Recibe como argumento un número (o variable que lo contiene) y lo transforma en un dato con
formato Long.

msgbox(CLng("300000") & vbNewLine & CLng(1536.750) & vbNewLine & CLng(-


6700000))

300000
1537
-6700000

COS (número)
Recibe un número (o variable que lo contiene) que representa a un ángulo en radianes y
devuelve el coseno de ese ángulo.

msgbox(Cos(50.0) & vbNewLine & Cos(-50.0))

0.964966028492113
0.964966028492113

CSNG (número)
Recibe como argumento un número (o variable que lo contiene) y lo transforma en un dato con
formato Single.

msgbox(CSng("300000") & vbNewLine & CSng(1536.75263541) & vbNewLine & CSng(-


6700000))

300000
1536.753
-6700000
CSTR (argumento)
Recibe como argumento un dato (o variable que lo contiene) que no sea una cadena
alfanumérica y lo devuelve transformado en una cadena.

Si la expresión es:

Boolean - Entonces la función CStr devuelve una cadena que contiene verdaderas o falsas.
Date - Entonces la función CStr devuelve una cadena que contiene una fecha en el
formato de fecha corta.
Null - Entonces se producirá un error en tiempo de ejecución.
Empty - Entonces la función CStr devolverá una cadena vacía ("").
Error - Entonces la función CStr devuelve una cadena que contiene la palabra "Error",
seguido de un número de error.
Other numeric - Entonces la función CStr devuelve una cadena que contiene el número.

msgbox(CStr("300000") & vbNewLine & CStr(#10-05-25#))

300000
10/5/2025

DATE ()
No recibe ningún argumento y devuelve la fecha del sistema.

msgbox("The current system date is: " & Date)

The current system date is: 10/20/2014


DATEADD (intervalo, cantidad, fecha)
Esta función devuelve el resultado de sumarle un periodo de tiempo a una fecha determinada.
Recibe tres parámetros obligatorios:

Puede tomar los siguientes valores:

yyyy - Año
q - Trimestre
m - Mes
y - Día del año
d - Día
w - Día de la semana
ww - Semana del año
h - Hora
n - Minuto
s - Segundo

msgbox ( DateAdd("yyyy",1,"31/Jan/10") & vbNewLine &


DateAdd("q",1,"31/Jan/10") & vbNewLine &
DateAdd("m",1,"31-Jan-10") & vbNewLine &
DateAdd("y",1,"31-Jan-10") & vbNewLine &
DateAdd("d",1,"31-Jan-10") & vbNewLine &
DateAdd("w",1,"31-Jan-10") & vbNewLine &
DateAdd("ww",1,"31-Jan-10") & vbNewLine &
DateAdd("h",1,"31-Jan-10 08:50:00") & vbNewLine &
DateAdd("n",1,"31-Jan-10 08:50:00") & vbNewLine &
DateAdd("s",1,"31-Jan-10 08:50:00")
)

1/31/2011
4/30/2010
2/28/2010
2/1/2010
2/1/2010
2/1/2010
2/7/2010
1/31/2010 9:50:00 AM
1/31/2010 8:51:00 AM
1/31/2010 8:50:01 AM
El intervalo es una cadena de texto que indica la unidad de tiempo que queremos añadir a la
fecha (horas, días, etc). Los posibles valores están indicados a continuación.

Cadena Significado
yyyy año completo
q trimestre
m mes
d día
w semana
h hora
m minuto
s segundo

La cantidad es el número de unidades del intervalo especificado que se le sumará a la fecha


indicada. Este valor puede ser positivo, para referirse a fechas futuras o negativo para referirse a
fechas pasadas.
La fecha es aquella a la que se le suman los intervalos especificados para que la función
devuelva una nueva fecha como resultado de la operación.

Por ejemplo. Si tecleamos la siguiente línea de código:

nueva = DATEADD ("yyyy",1,10-02-1996) resultado será 10-02-1997.

Esta función tiene en cuenta incluso los años bisiestos.


DATEDIFF (intervalo, fecha 1, fecha2)
Calcula la diferencia entre las dos fechas especificadas y la devuelve expresada en los periodos
indicados en intervalo. Por lo tanto devuelve un resultado numérico. Los posibles intervalos a
especificar son los mismos que en el caso anterior.

Intervalo:

Puede tomar los siguientes valores:

yyyy - Año
q - Trimestre
m - Mes
y - Día del año
d - Día
w - Día de la semana
ww - Semana del año
h - Hora
n - Minuto
s - Segundo

fromDate="31/Jan/09 00:00:00"
toDate="31/Jan/10 23:59:00"
msgbox ( DateDiff("yyyy",fromDate,toDate) & vbNewLine &
DateDiff("q",fromDate,toDate) & vbNewLine &
DateDiff("m",fromDate,toDate) & vbNewLine &
DateDiff("y",fromDate,toDate) & vbNewLine &
DateDiff("d",fromDate,toDate) & vbNewLine &
DateDiff("w",fromDate,toDate) & vbNewLine &
DateDiff("ww",fromDate,toDate) & vbNewLine &
DateDiff("h",fromDate,toDate) & vbNewLine &
DateDiff("n",fromDate,toDate) & vbNewLine &
DateDiff("s",fromDate,toDate)
)

1
4
12
365
365
52
53
8783
527039
31622340
DATEPART (intervalo, date[,firstdayofweek[,firstweekofyear]])
La función DatePart devuelve la parte especificada de una fecha determinada.
intervalo: Requerido. El intervalo de tiempo para volver.
Puede tomar los siguientes valores:
yyyy - Año
q - Trimestre
m - Mes
y - Día del año
d - Día
w - Día de la semana
ww - Semana del año
h - Hora
n - Minuto
s - Segundo
date: requerida. Fecha de expresión para evaluar
firstdayofweek: opcional. Especifica el día de la semana.
Puede tomar los siguientes valores:
0 = vbUseSystemDayOfWeek - Uso Soporte de idioma nacional (NLS) ajuste API
1 = vbSunday - Domingo (por defecto)
2 = vbMonday - Lunes
3 = vbTuesday - Martes
4 = vbWednesday - Miércoles
5 = vbThursday - Jueves
6 = vbFriday - Viernes
7 = vbSaturday - Sábado
firstweekofyear opcional. Especifica la primera semana del año.
Puede tomar los siguientes valores:
0 = vbUseSystem - Uso Soporte de idioma nacional (NLS) ajuste API
1 = vbFirstJan1 - Ponerse en la semana en la que se produce 01 de enero
(predeterminado)
2 = vbFirstFourDays - Ponerse en la semana que tiene al menos cuatro días en
el nuevo año
3 = vbFirstFullWeek - Comience con la primera semana completa del nuevo año

d=CDate("2010-02-16")

msgbox(DatePart("m",d))

msgbox(DatePart("m",Now()))

10

msgbox(DatePart("h",Now())

17
DATESERIAL(year,month,day)
La función DateSerial devuelve un Variant de subtipo Date para un año, mes y día
especificados.

year: Solicitadas. Un número entre 100 y 9999, o una expresión numérica. Los valores
comprendidos entre 0 y 99 se interpretan como los años 19001999. Para todos los
otros argumentos año, utilice un completo cuatro dígitos del año
month: Solicitadas. Cualquier expresión numérica
day: Requeridos. Cualquier expresión numérica

msgbox(DateSerial(2010,2,3)& vbNewLine & DateSerial(2010,2,3-10))

2/3/2010
1/24/2010

DATEVALUE(date)
La función DateValue convierte una cadena a una fecha.
Nota: - Si la parte del año de la fecha se omite esta función utilizará el año en curso a partir de la
fecha del sistema del equipo.
– Si el parámetro de fecha incluye información de hora no será devuelto. Sin
embargo, si la fecha incluye información de hora no válida, se producirá un error en tiempo de
ejecución.

msgbox(DateValue("31/Jan/10") & vbNewLine & DateValue("31/Jan"))

1/31/2010
1/31/2010

DAY (fecha)
Esta función recibe como argumento una fecha y devuelve un número que corresponde al día
del mes de la fecha indicada.

msgbox(Day("2010-02-16"))

16
FORMATDATETIME(date, Format)
Los formatos de función FormatDateTime y devuelve una fecha u hora expresión válida.

Date: Requerida. Cualquier expresión de fecha válida (como Date() o Now())


Format: Opcional. Un valor que especifica el formato de date/time para usar

Puede tomar los siguientes valores:

0= vbGeneralDate - por defecto. Devoluciones Fecha: mm / dd / aa y l


a hora si se especifica: hh: mm: ss AM / PM.
1 = vbLongDate - Devuelve la fecha: día de la semana, MonthName, año
2 = vbShortDate - Devuelve la fecha: mm / dd / yy
3 = vbLongTime - Devuelve el tiempo: hh: mm: ss AM / AM
4 = vbShortTime - Vuelta de tiempo: hh: mm

d=CDate("2010-02-16 13:45")
msgbox( FormatDateTime(d) & vbNewLine &
FormatDateTime(d,1) & vbNewLine &
FormatDateTime(d,2) & vbNewLine &
FormatDateTime(d,3) & vbNewLine &
FormatDateTime(d,4)
)
2/16/2010 1:45:00 PM
Tuesday, February 16, 2010
2/16/2010
1:45:00 PM
13:45

EXP (número)
Recibe como argumento un número (o variable que lo contiene) y devuelve el número e
elevado a la potencia indicada.

msgbox(Exp(6.7) & vbNewLine & Exp(-6.7))

812.405825167543
1.23091190267348E-03

FIX (número)
Recibe un número (o variable que lo contiene). Devuelve la parte entera de un número,
truncando los decimales. Si el argumento es un número negativo, esta función devuelve el primer
negativo igual o mayor que encuentre.

msgbox(Fix(6.83227) & vbNewLine & Fix(6.23443))

6
6
FORMATCURRENCY (número, dígitos_decimales, cero_decimal, negativos_paréntesis,
agrupar_dígitos)
Esta función se usa para representar números en formato de moneda, es decir, con la
apariencia de valores económicos. Recibe cuatro argumentos. El primero de ellos es el número (o
variable que lo contiene) que hay que representar como cifra económica. Los otros tres son
opcionales.
El parámetro dígitos_decimales especifica cuantos dígitos se quiere que aparezcan a la
derecha de la coma digital.
El parámetro cero_decimal indica si se quiere completar el número con ceros a la derecha de
los decimales. P.e. Si se especificaron dos decimales en el parámetro anterior y un número tiene un
solo decimal ¿Queremos un cero a la derecha de ese decimal? Si lo queremos, este parámetro será un
-1. Si no lo queremos, el parámetro será 0.
El parámetro negativos_paréntesis especifica si queremos que los números negativos
aparezcan entre paréntesis. Si lo queremos, pondremos -1. Si no, un 0.
El parámetro agrupar_dígitos indica si queremos que los dígitos aparezcan agrupados de tres
en tres, en millares, millones, etc. Si lo queremos pondremos un -1. Si no lo deseamos así,
pondremos un 0.
Estos tres últimos parámetros pueden recibir como valor, en lugar de -1 o 0, un -2. En éste
último caso se toman las características establecidas en la configuración regional del sistema, en el
panel de control de Windows.

msgbox(FormatCurrency(20000))

$20,000.00

FORMATNUMBER (número, dígitos_decimales, cero_decimal, negativos_paréntesis,


agrupar_dígitos)
Esta función opera igual que la anterior, solo que se refiere a un formato genérico, sin asociar a
ninguna moneda.

msgbox(FormatNumber(20000))

20,000.00
FORMATPERCENT (Expression [,NumDigAfterDec [,
IncLeadingDig [,UseParForNegNum [,GroupDig ]]]] )
La función FormatPercent devuelve una expresión con formato de porcentaje (multiplicado por
100) con un caracter de % al final.

expression: solicitadas. La expresión que va a formatear

NumDigAfterDec: Opcional. Indica cómo se muestran muchos lugares a la derecha del punto
decimal. El valor predeterminado es -1 (se utiliza la configuración regional del equipo)

IncLeadingDig: Opcional. Indica si se muestra o no un cero para valores fraccionarios:


-2 = TristateUseDefault - Utilizar la configuración regional del equipo
-1 = TristateTrue - Verdadero
0 = TristateFalse - Falso

UseParForNegNum: Opcional. Indica si debe o no valores negativos entre paréntesis:


-2 = TristateUseDefault - Utilizar la configuración regional del equipo
-1 = TristateTrue - Verdadero
0 = TristateFalse - Falso

GroupDig: Opcional. Indica si los números se agrupan utilizando el delimitador de grupo


especificado en la configuración regional del equipo:
-2 = TristateUseDefault - Utilizar la configuración regional del equipo
-1 = TristateTrue - Verdadero
0 = TristateFalse - Falso

'How many percent is 6 of 345?


msgbox(FormatPercent(6/345))

1.74%

'How many percent is 6 of 345?


msgbox(FormatPercent(6/345,1))

1.7%
HEX (número)
Recibe como argumento un número decimal (o variable que lo contiene) y lo convierte en
hexadecimal.

msgbox( Hex(3) & vbNewLine &


Hex(5) & vbNewLine &
Hex(9) & vbNewLine &
Hex(10) & vbNewLine &
Hex(11) & vbNewLine &
Hex(12) & vbNewLine &
Hex(400) & vbNewLine &
Hex(459) & vbNewLine &
Hex(460)
)

3
5
9
A
B
C
190
1CB
1CC

HOUR (hora)
Esta función recibe como argumento una variable que contiene una hora en formato hh:mm:ss
y devuelve la hora como un número de 0 a 23.

msgbox(Hour("13:45"))

13
INSTR ([comienzo,] cadena 1, cadena 2[,compare] )
Busca la primera aparición de la cadena 2 dentro de la cadena 1. Los parámetros comienzo y
comparación son opcionales. El parámetro comienzo indica a partir de que carácter de la cadena 1
se empieza a buscar la cadena 2. Si se omite, la búsqueda se inicia desde el primer carácter.

comienzo. Especifica la posición inicial para cada búsqueda. La búsqueda comienza en la posición del
primer carácter (1) de forma predeterminada. Este parámetro es necesario si se especifica comparar
cadena1 Obligatorio. La cadena que desea buscar
cadena2 Necesario. La expresión de cadena a buscar

comparar Opcional. Especifica la comparación de cadenas para su uso. El valor predeterminado es 0


Puede tener uno de los siguientes valores:

0 = vbBinaryCompare - Realiza una comparación binaria


1 = vbTextCompare - Realiza una comparación textual

txt="This is a beautiful day!"


msgbox(InStr(txt,"beautiful"))

11

txt="This is a beautiful day!"


msgbox(InStr(1,txt,"i") & vbNewLine & InStr(7,txt,"i"))

3
16

txt="This is a beautiful day!"


msgbox(InStr(1,txt,"t",1) & vbNewLine & InStr(1,txt,"t",0))

1
15
INSTRREV (cadena 1, cadena 2[,comienzo][,compare] )
Esta función es similar a la anterior, solo que empieza la búsqueda por el final de la cadena.

comienzo. Especifica la posición inicial para cada búsqueda. La búsqueda comienza en la posición del
primer carácter (1) de forma predeterminada. Este parámetro es necesario si se especifica comparar
cadena1 Obligatorio. La cadena que desea buscar
cadena2 Necesario. La expresión de cadena a buscar

compare (Opcional). Especifica la comparación de cadenas para su uso. El valor predeterminado es 0


Puede tener uno de los siguientes valores:

0 = vbBinaryCompare - Realiza una comparación binaria


1 = vbTextCompare - Realiza una comparación textual

txt="This is a beautiful day!"


msgbox(InStrRev(txt,"beautiful"))

11

txt="This is a beautiful day!"


msgbox(InStrRev(txt,"i",-1) & vbNewLine & InStrRev(txt,"i",7))

16
6

txt="This is a beautiful day!"


msgbox(InStrRev(txt,"T",-1,1)& vbNewLine & InStrRev(txt,"T",-1,0))

15
1

INT (número)
Recibe un número (o variable que lo contiene). Devuelve la parte entera de un número,
truncando los decimales. Si el argumento es un número negativo, esta función devuelve el primer
negativo igual o menor que encuentre.

msgbox(Int(6.83227) & vbNewLine & Int(6.23443))

6
6

ISARRAY (variable)
Esta función recibe como argumento un nombre de una variable y comprueba si es una matriz.
Devuelve un valor booleano.

days=Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
msgbox(IsArray(days))

True
JOIN (list[,delimiter])

La función Join devuelve una cadena que consiste en un número de sub-cadenas en una matriz.

Llist : Requerida. A unidimensional matriz que contiene las sub-cadenas a unir


delimiter: Opcional. El personaje (s) utilizado para separar las sub-cadenas en la cadena devuelta.
Por defecto es el carácter de espacio

La separación de los elementos de una matriz, con y sin utilizar el parámetro delimitador:

days=Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
msgbox( Join(days) & vbNewLine &
Join(days,",") & vbNewLine &
Join(days," ### ")
)

Sun Mon Tue Wed Thu Fri Sat


Sun,Mon,Tue,Wed,Thu,Fri,Sat
Sun ### Mon ### Tue ### Wed ### Thu ### Fri ### Sat

ISDATE (variable)
Esta función recibe como argumento el nombre de una variable y comprueba si es una fecha.
Devuelve un valor booleano.

msgbox(IsDate("April 22, 1947") & vbNewLine & IsDate(#01/31/10#))

True
True

ISEMPTY (variable)
Esta función recibe como argumento el nombre de una variable. Devuelve un valor booleano.
Es verdadero si la variable no está inicializada y falso si lo está

Dim x
msgbox(IsEmpty(x) & vbNewLine )
x=10
msgbox(IsEmpty(x) & vbNewLine )
x=Empty
msgbox(IsEmpty(x) & vbNewLine )
x=Null
msgbox(IsEmpty(x) & vbNewLine )

True
False
True
False
ISNULL (variable)
Esta función recibe como argumento un nombre de variable y devuelve un valor lógico.
Verdadero si la variable contiene un Null. Falso si no lo contiene.

Dim x
msgbox(IsNull(x) & vbNewLine )
x=10
msgbox(IsNull(x) & vbNewLine )
x=Empty
msgbox(IsNull(x) & vbNewLine )
x=Null
msgbox(IsNull(x) & vbNewLine )

False
False
False
True

ISNUMERIC (variable)
Recibe una variable, supuestamente numérica. Devuelve un valor lógico verdadero si el
parámetro que ha recibido es una variable que contiene un número y un valor lógico falso en caso
contrario.

Dim x
x=10
msgbox(IsNumeric(x) & vbNewLine)
x=Empty
msgbox(IsNumeric(x) & vbNewLine)
x=Null
msgbox(IsNumeric(x) & vbNewLine)
x="10"
msgbox(IsNumeric(x) & vbNewLine)
x="911 Help"
msgbox(IsNumeric(x) & vbNewLine)

True
True
False
True
False

LCASE (cadena)
Recibe como argumento una cadena (o una variable que contiene una cadena) y la convierte a
minúsculas.

txt="THIS IS A BEAUTIFUL DAY!"


msgbox(LCase(txt))

this is a beautiful day!


LEFT (cadena, longitud)
Devuelve una sub-cadena compuesta por los caracteres que hay a la izquierda de una cadena.
Los argumentos que recibe son una cadena (o variable que la contiene) y la longitud (cantidad de
caracteres) de la sub-cadena.

txt="This is a beautiful day!"


msgbox(Left(txt,15))

This is a beaut

LEN (cadena)
Recibe como argumento una cadena (o variable que la contiene) y devuelve la cantidad de
caracteres que componen dicha cadena.

txt="This is a beautiful day!"


msgbox(Len(txt))

24

LOG (número)
Esta función recibe como argumento un número (o una variable que lo contenga) que deberá
ser mayor de 0 y devuelve el logaritmo en base e de dicho número.

msgbox(Log(38.256783227))

3.64432088381777

LTRIM (cadena)
Recibe como argumento una cadena o variable que la contiene. Devuelve la cadena sin los
espacios en blanco que hay a la izquierda de la misma.

fname=" Jack "


response.write("Hello" & LTrim(fname) & "and welcome.")

HelloJack and welcome.

RTRIM (cadena)
La función RTrim elimina los espacios en el lado derecho de una cadena.
Sugerencia: Busque también en la LTrim y las funciones de ajuste.

fname=" Jack "


msgbox("Hello" & RTrim(fname) & "and welcome.")

Hello Jackand welcome.


MID (cadena, inicio, longitud)
Recibe como argumentos una cadena (o variable que la contiene), una posición de inicio (o
variable numérica que la contiene) y una longitud (o variable numérica que la contiene).
Devuelve una sub-cadena extraída de una cadena original. La sub cadena tiene los caracteres
expresados en longitud, contados a partir del carácter inicio. Por lo tanto, el primer argumento
es alfanumérico y los otros dos son numéricos.

txt="This is a beautiful day!"


msgbox(Mid(txt,1,1))

MINUTE (hora)
Esta función recibe como argumento una variable que contiene una hora en formato hh:mm:ss
y devuelve los minutos como un número de 0 a 59.

msgbox(Minute("13:45"))

45

MONTH (fecha)
Esta función recibe como argumento una fecha o una variable de fecha y devuelve un número
del 1 al 12 que indica el mes de la fecha.

msgbox(Month("2010-02-16"))

MONTHNAME (mes[,abreviado])
Esta función recibe como argumento un número del 1 al 12 (o una variable que lo contiene) y
devuelve el nombre del mes correspondiente. El otro parámetro que recibe es un valor lógico para
indicar si el nombre debe aparecer abreviado o no.

msgbox(MonthName(8) & vbNewLine & MonthName(8,True))

August
Aug

NEW ()
La función Ahora devuelve la fecha y la hora actual de acuerdo con el ajuste de la fecha del
sistema de su ordenador y el tiempo.

msgbox("The current system date and time is: " & Now)

The current system date and time is: 10/21/2014 7:30:04 PM


OCT (número)
Recibe como argumento un número decimal (o variable que lo contiene) y lo convierte en octal.

msgbox( Oct(3) & vbNewLine &


Oct(5) & vbNewLine &
Oct(9) & vbNewLine &
Oct(10) & vbNewLine &
Oct(11) & vbNewLine &
Oct(12) & vbNewLine &
Oct(400) & vbNewLine &
Oct(459) & vbNewLine &
Oct(460)
)

3
5
11
12
13
14
620
713
714
REPLACE (cadena 1, cadena 2, cambia_por, comienzo, veces [,compare])
Esta función encuentra la cadena 2 dentro de la cadena 1 y la sustituye por cambia_por.
Comienza a buscar a partir del carácter cuyo número de orden es el indicado en comienzo y,
si la cadena_2 aparece mas de una vez en la cadena 1 la cambia el número de veces indicado.

cadena 1: necesaria. La cadena que desea buscar


cadena 2: Obligatorio. La parte de la cadena que será reemplazado
cambia_por: Obligatorio. La sub-cadena de reemplazo
comienzo: opcional. Especifica la posición de inicio. Predeterminado es 1 Todos los personajes
antes de que se elimina la posición de inicio.
veces: opcional. Especifica el número de sustituciones a realizar.
El valor predeterminado es -1, que significa hacer todas las sustituciones posibles
compare: Opcional. Especifica la comparación de cadenas para su uso. El valor
predeterminado es 0

Puede tener uno de los siguientes valores:

0 = vbBinaryCompare - Realiza una comparación binaria


1 = vbTextCompare - Realiza una comparación textual

txt="This is a beautiful day!"


msgbox(Replace(txt,"beautiful","fantastic"))

This is a fantastic day!

txt="This is a beautiful day!"


msgbox(Replace(txt,"beautiful",""))

This is a day!

txt="This is a beautiful day!"


msgbox(Replace(txt,"i","##"))

Th##s ##s a beaut##ful day!

txt="This is a beautiful day!"


msgbox(Replace(txt,"i","##",15))

t##ful day!

txt="This is a beautiful day!"


msgbox(Replace(txt,"i","##",1,2))
response.write(Replace(txt,"i","##",1,2))

Th##s ##s a beautiful day!

txt="This is a beautiful day!"


msgbox(Replace(txt,"t","##",1,-1,1) & vbNewLine & Replace(txt,"t","##",1,-
1,0))

##his is a beau##iful day!


This is a beau##iful day!
RIGHT (cadena, longitud)

Devuelve una sub-cadena compuesta por los caracteres que hay a la derecha de una cadena. Los
argumentos que recibe son una cadena (o variable que la contiene) y la longitud (cantidad de
caracteres) de la sub-cadena.

txt="This is a beautiful day!"


msgbox(Right(txt,10))
response.write(Right(txt,10))

tiful day!

txt="This is a beautiful day!"


x=Len(txt)
msgbox(Right(txt,x))

This is a beautiful day!

RND([number] )
Recibe un argumento vacío y devuelve un número aleatorio. Para que funcione correctamente,
es necesario incluir en el código VBScript una línea con la instrucción RANDOMIZE.

Number : Opcional. Una expresión numérica válida


Si el número es:
<0 - Rnd devuelve el mismo número cada vez
> 0 - Rnd devuelve el siguiente número aleatorio en la secuencia
= 0 - Rnd devuelve el número generado más recientemente
No suministrado - Rnd devuelve el siguiente número aleatorio en la secuencia

response.write(Rnd)

0.7055475

Randomize
msgbox(Rnd)

0.4758112

Dim max,min
max=100
min=1
Randomize
msgbox(Int((max-min+1)*Rnd+min))

71
ROUND (número, decimales)
Esta función redondea el número (o variable que lo contiene) y lo devuelve con el número de
decimales expresado en decimales.

msgbox( Round(24.13278) & vbNewLine &


Round(24.75122) & vbNewLine &
Round(24.13278,2)
)

24
25
24.13

RTRIM (cadena)
Recibe como argumento una cadena o variable que la contiene. Devuelve la cadena sin los
espacios en blanco que hay a la derecha de la misma.

fname=" Jack "


msgbox("Hello" & RTrim(fname) & "and welcome.")

Hello Jackand welcome.


SCRIPTENGINEBUILDVERSION ()
SCRIPTENGINE ()
SCRIPTENGINEMAJORVERSION ()
SCRIPTENGINEMINORVERSION ()
Esta función no recibe ningún argumento y devuelve el número de versión del motor de Script
que se está utilizando.

Función ScriptEngine
La función ScriptEngine devuelve el lenguaje de scripting en uso.
Esta función puede devolver uno de los siguientes textos:
•VBScript - Indica que Microsoft Visual Basic Scripting Edition es el motor de scripting actual
•JScript - Indica que Microsoft JScript es el motor de scripting actual
•VBA - Indica que Microsoft Visual Basic para Aplicaciones es el motor de scripting actual

Función ScriptEngineBuildVersion
La función ScriptEngineBuildVersion devuelve el número de versión de compilación del motor de
scripting en uso.

Función ScriptEngineMajorVersion
La función ScriptEngineMajorVersion devuelve el número de versión principal del motor de scripting en
uso.

Función ScriptEngineMinorVersion
La función ScriptEngineMinorVersion devuelve el número de versión secundaria del motor de scripting
en uso.

Msgbox( ScriptEngine & vbNewLine &


ScriptEngineBuildVersion & vbNewLine &
ScriptEngineMajorVersion & vbNewLine &
ScriptEngineMinorVersion
)

VBScript
18702
5
8

SECOND (hora)
Esta función recibe una expresión de hora en formato hh:mm:ss y devuelve el número de
segundos correspondiente.

msgbox(Second("13:45:21"))

21
SGN (numero)
Recibe un argumento numérico y devuelve un 1 si el número es positivo, un -1 si es negativo y
un 0 si es 0.

numero: requerido. Una expresión numérica válida


Si el número es:

> 0 - Sgn devuelve 1


= 0 - Sgn devuelve 0
< 0 - Sgn devuelve -1

msgbox( Sgn(15) & vbNewLine &


Sgn(-5.67) & vbNewLine &
Sgn(0) & vbNewLine &
)

1
-1
0

SIN (número)
Recibe un número (o variable que lo contiene) que representa a un ángulo en radianes y
devuelve el seno de ese ángulo.

msgbox(Sin(47)& vbNewLine & Sin(-47))

0.123573122745224
-0.123573122745224

SGR (número)
La función Sqr devuelve la raíz cuadrada de un número.
Nota: El parámetro de número no puede ser un valor negativo.
número: Requerido. Una expresión numérica válida >= 0

msgbox(Sqr(9) & vbNewLine & Sqr(0) & vbNewLine & Sqr(47))

3
0
6.85565460040104

SPACE (numero)
Recibe como argumento un número (o variable que lo contiene) y devuelve una cadena
formada por espacios en blanco; tantos como especifica el número.

Dim txt
txt=Space(10)
msgbox(txt)

" "
SQR (número)
Devuelve la raíz cuadrada del número (o variable numérica) que recibe como argumento.

msgbox(Sqr(9) & vbNewLine & Sqr(0) & vbNewLine & Sqr(47))

3
0
6.85565460040104

STRCOMP (cadena 1, cadena 2 [,comparar])


Recibe como argumentos dos cadenas alfanuméricas (o variables que las contienen) separadas
por comas. Si ambas cadenas son iguales devuelve un 0. Si la primera es mayor que la
segunda, devuelve un 1. Si la segunda es mayor que la primera devuelve un -1. Si alguna
cadena tiene un valor Null, devuelve Null. En este sentido debemos recordar que un carácter es mayor
o menor que otro en función de sus códigos ASCII. Así, p.e., la a es mayor que la A, porque el código
ASCII de la A es 65 y el de la a es 97.

cadena1: Obligatorio. Una expresión de cadena


cadena2: Necesario. Una expresión de cadena
comparar: Opcional. Especifica la comparación de cadenas para su uso. El valor
predeterminado es 0

Puede tener uno de los siguientes valores:

0 = vbBinaryCompare - Realiza una comparación binaria


1 = vbTextCompare - Realiza una comparación textual

msgbox(StrComp("VBScript","VBScript"))

STRING (número, carácter)


Recibe como argumentos un número (o variable que lo contiene) y un carácter (o variable que
lo contiene). Devuelve una cadena compuesta por el carácter especificado, repetido las veces que
indica el número.

msgbox( String(10,"#") & vbNewLine &


String(4,"*") & vbNewLine &
String(4,42) & vbNewLine &
String(4,"XYZ")
)

##########
****
****
XXXX
STRREVERSE (cadena)
Recibe como argumento una cadena (o variable que la contiene) y devuelve la cadena tras
invertir el orden de todos los caracteres que la componen. Así pues, el primero de la cadena original
será el último de la cadena resultante.

Dim txt
txt="This is a beautiful day!"
response.write(StrReverse(txt))

!yad lufituaeb a si sihT

TAN (número)
Recibe un número (o variable que lo contiene) que representa a un ángulo en radianes y
devuelve la tangente de ese ángulo.

msgbox(Tan(40) & vbNewLine & Tan(-40))

-1.1172149309239
1.1172149309239

TIME ()
Esta función no recibe ningún argumento y devuelve una expresión que representa la hora del
sistema en formato hh:mm:ss.

msgbox("The current system time is: " & Time)

The current system time is: 4:47:31 PM

TIMER
La función Timer devuelve el número de segundos y milisegundos, desde las 12:00 AM.

msgbox("Seconds and milliseconds since 12:00 AM: " & Timer)

Seconds and milliseconds since 12:00 AM: 64783.9

TIMESERIAL (número 1, número 2, número 3)


Esta función recibe tres parámetros numéricos y los convierte a una hora en formato
hh:mm:ss. El número 1(hh) debe estar comprendido entre 0 y 23; el número 2(mm) debe estar
comprendido entre 0 y 59 y el número 3(ss) también.

Msgbox( TimeSerial(23,2,3) & vbNewLine &


TimeSerial(0,9,11) & vbNewLine &
TimeSerial(14+2,9-2,1-1)
)

11:02:03 PM
12:09:11 AM
4:07:00 PM
TIMEVALUE (fecha)
Esta función recibe una variable de fecha y extrae y devuelve la parte de la hora.

Msgbox( TimeValue("5:55:59 PM") & vbNewLine &


TimeValue(#5:55:59 PM#) & vbNewLine &
TimeValue("15:34")
)
5:55:59 PM
5:55:59 PM
3:34:00 PM

WEEKDAY (fecha [,primer_día])


Esta función recibe dos parámetros. Es primero es una fecha o variable que la contiene; el
segundo es una constante que indica el que es el primer día de la semana en nuestro país. Devuelve
un número correspondiente al día de la semana de la fecha introducida. Las constantes para identificar
que día de la semana es el primero en nuestro país son:

Constante Corresponde a
VBSUNDAY Domingo
VBMONDAY Lunes
VBTUESDAY Martes
VBWEDNESDAY Miércoles
VBTHURSDAY Jueves
VBFRIDAY Viernes
VBSATURDAY Sábado

primer_día: Especifica el primer día de la semana.


Puede tomar los siguientes valores:
0 = vbUseSystemDayOfWeek - Uso Soporte de idioma nacional (NLS) ajuste API
1 = vbSunday - Domingo(Sunday) (por defecto)
2 = vbMonday - Lunes (Monday)
3 = vbTuesday - Martes (Tuesday)
4 = vbWednesday - Miércoles (Wednesday)
5 = vbThursday - Jueves (Thursday)
6 = vbFriday - Viernes (Friday)
7 = vbSaturday - Sábado (Saturday)

msgbox( Weekday("2010-02-16",0) & vbNewLine &


Weekday("2010-02-16",1) & vbNewLine &
Weekday("2010-02-16",2) & vbNewLine &
Weekday("2010-02-16",3) & vbNewLine &
Weekday("2010-02-16",4) & vbNewLine &
Weekday("2010-02-16",5) & vbNewLine &
Weekday("2010-02-16",6)
)
3
3
2
1
7
6
5
WEEKDAYNAME (día_semana[, abreviado[,primer_día]])
Esta función recibe un número de día de la semana, un valor lógico y una constante que indica
cual es el primer día de la semana en nuestro país. Devuelve como resultado el nombre del día de la
semana que corresponde al número introducido. Si el valor lógico es verdadero, el nombre que
devuelve aparece en abreviatura. Las constantes que identifican el día de la semana son las
mismas que en el caso anterior.

primer_día: Especifica el primer día de la semana.

Puede tomar los siguientes valores:

0 = vbUseSystemDayOfWeek - Uso Soporte de idioma nacional (NLS) ajuste API


1 = vbSunday - Domingo(Sunday) (por defecto)
2 = vbMonday - Lunes (Monday)
3 = vbTuesday - Martes (Tuesday)
4 = vbWednesday - Miércoles (Wednesday)
5 = vbThursday - Jueves (Thursday)
6 = vbFriday - Viernes (Friday)
7 = vbSaturday - Sábado (Saturday)

msgbox( WeekdayName(3) & vbNewLine &


WeekdayName(3,True) & vbNewLine &
WeekdayName(3,False,2)
)

Tuesday
Tue
Wednesday

YEAR (fecha)

La función de Año devuelve un número que representa el año.


msgbox(Year("2010-02-16"))

2010

TRIM (cadena)
Recibe como argumento una cadena o variable que la contiene. Devuelve la cadena sin los
espacios en blanco que hay a la izquierda y a la derecha de la misma.

fname=" Jack "


msgbox("Hello" & Trim(fname) & "and welcome.")

HelloJackand welcome.
TYPENAME (variable)
Esta función recibe un nombre de variable y devuelve el nombre de subtipo del dato que
contiene.

La función TypeName puede devolver uno de los siguientes valores:

Byte - Indica un valor de byte


Integer - Indica que un valor entero
Long - Indica un valor entero largo
Single - Indica una precisión simple valor de punto flotante
Double - Indica una precisión doble valor de punto flotante
Currency - Indica un valor de moneda
Decimal - Indica un valor decimal
Date - Indica un valor de fecha u hora
String - Indica un valor de cadena de caracteres
Boolean - Indica un valor booleano; Verdadero o Falso
Empty - Indica una variable no inicializado
Null - Indica que no hay datos válidos
<object type> - Indica el nombre del tipo real de un objeto
Object - Indica un objeto genérico
Unknown - Indica un tipo de objeto desconocido
Nothing - Indica una variable de objeto que todavía no se refieren a una instancia de
objeto
Error - Indica un error

x="Hello World!"
msgbox(TypeName(x) & vbNewLine)
x=4
msgbox(TypeName(x) & vbNewLine)
x=4.675
msgbox(TypeName(x) & vbNewLine)
x=Null
msgbox(TypeName(x) & vbNewLine)
x=Empty
msgbox(TypeName(x) & vbNewLine)
x=True
msgbox(TypeName(x) & vbNewLine)

String
Integer
Double
Null
Empty
Boolean
UCASE (cadena)
Recibe como argumento una cadena (o una variable que contiene una cadena) y la convierte a
mayúsculas.

txt="This is a beautiful day!"


msgbox(UCase(txt))

THIS IS A BEAUTIFUL DAY!

UBOUND (arrayname[,dimension] )

La función UBound devuelve el mayor subíndice para la dimensión indicada de una matriz.
Consejo: Utilice la función UBound con la función LBound para determinar el tamaño de una
matriz.

arrayname: Obligatorio. El nombre de la variable de matriz


dimension: opcional. ¿Qué dimensión del límite superior para volver.
1 = primera dimensión,
2 = segunda dimensión,
y así sucesivamente. El valor predeterminado es 1

days=Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
msgbox(LBound(days) & vbNewLine & UBound(days))

0
6

Dim food(2,3)
food(0,0)="Apple"
food(0,1)="Banana"
food(0,2)="Orange"
food(0,3)="Lemon"
food(1,0)="Pizza"
food(1,1)="Hamburger"
food(1,2)="Spaghetti"
food(1,3)="Meatloaf"
food(2,0)="Cake"
food(2,1)="Cookie"
food(2,2)="Icecream"
food(2,3)="Chocolate"
msgbox( LBound(food,1) & vbNewLine &
UBound(food,1) & vbNewLine &
LBound(food,2) & vbNewLine &
UBound(food,2)
)

0
2
0
3
UCASE (cadena)
La función LBound devuelve el subíndice más pequeño para la dimensión indicada de una
matriz.
Nota: El LBound para cualquier dimensión es siempre 0.
Consejo: Utilice la función LBound con la función UBound para determinar el tamaño de una
matriz.

arrayname: Obligatorio. El nombre de la variable de matriz


dimension: Opcional. ¿Qué dimensión del límite inferior para volver.
1 = primera dimensión,
2 = segunda dimensión,
y así sucesivamente. El valor predeterminado es 1

days=Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
msgbox(LBound(days) & vbNewLine & UBound(days))

0
6

Dim food(2,3)
food(0,0)="Apple"
food(0,1)="Banana"
food(0,2)="Orange"
food(0,3)="Lemon"
food(1,0)="Pizza"
food(1,1)="Hamburger"
food(1,2)="Spaghetti"
food(1,3)="Meatloaf"
food(2,0)="Cake"
food(2,1)="Cookie"
food(2,2)="Icecream"
food(2,3)="Chocolate"
msgbox( LBound(food,1) & vbNewLine &
UBound(food,1) & vbNewLine &
LBound(food,2) & vbNewLine &
UBound(food,2)
)

0
2
0
3
VARTYPE (varname)

La función VarType devuelve un valor que indica el subtipo de una variable especificada.
La función VarType puede devolver uno de los siguientes valores:

0 = vbEmpty - Indica vacío (sin inicializar)


1 = vbNull - Indica (datos no válidos) null
2 = vbInteger - Indica un entero
3 = vbLong - Indica un entero largo
4 = vbSingle - Indica una precisión simple número en coma flotante
5 = vbDouble - Indica una precisión doble número de coma flotante
6 = vbCurrency - Indica una moneda
7 = vbDate - Indica una fecha
8 = vbString - Indica una cadena
9 = vbObject - Indica que un objeto de automatización
10 = vbError - Indica un error
11 = vbBoolean - Indica un valor booleano
12 = vbVariant - Indica una variante (sólo se utiliza con conjuntos de variantes)
13 = vbDataObject - Indica que un objeto de acceso a datos
17 = vbByte - Indica un byte
8192 = VBArray - Indica una matriz
Nota: Si la variable es una matriz VarType () devuelve 8192 + VarType (array_element). Ejemplo: para
una serie de VarType entero () devolverá 8192 + 2 = 8194.

x="Hello World!"
msgbox(VarType(x) & vbNewLine )
x=4
msgbox(VarType(x) & vbNewLine )
x=4.675
msgbox(VarType(x) & vbNewLine )
x=Null
msgbox(VarType(x) & vbNewLine )
x=Empty
msgbox(VarType(x) & vbNewLine )
x=True
msgbox(VarType(x) & vbNewLine )

8
2
5
1
0
11
SPLIT(expression[,delimiter[,count[,compare]]])
La función Split devuelve una matriz unidimensional de base cero que contiene un número
especificado de sub-cadenas.

expression: Solicitadas. Una expresión de cadena que contiene sub-cadenas y delimitadores


delimiter: Opcional. Una cadena de caracteres utilizada para identificar los límites de sub-cadenas.
Por defecto es el carácter de espacio
count: Opcional. El número de sub-cadenas que se devuelva. -1 Indica que todas las sub-
cadenas se devuelven
compare: Opcional. Especifica la comparación de cadenas para su uso.
Puede tener uno de los siguientes valores:

0 = vbBinaryCompare - Realiza una comparación binaria


1 = vbTextCompare - Realiza una comparación textual

a=Split("W3Schools is my favourite website")


for each x in a
msgbox(x & vbNewLine)
next

W3Schools
is
my
favourite
website

a=Split("Brown cow, White horse, Yellow chicken",",")


for each x in a
msgbox(x & vbNewLine)
next

Brown cow
White horse
Yellow chicken

a=Split("W3Schools is my favourite website"," ",2)


for each x in a
msgbox(x & vbNewLine)
next

W3Schools
is my favourite website

a=Split("SundayMondayTuesdayWEDNESDAYThursdayFridaySaturday","day",-1,1)
for each x in a
msgbox(x & vbNewLine)
next

Sun
Mon
Tues
WEDNES
Thurs
Fri
Satur

a=Split("SundayMondayTuesdayWEDNESDAYThursdayFridaySaturday","day",-1,0)
for each x in a
msgbox(x & vbNewLine)
next
Sun
Mon
Tues
WEDNESDAYThurs
Fri
Satur

CREATEOBJECT (servername.typename[,location])

La función CreateObject crea un objeto de un tipo especificado.

servername: Obligatorio. El nombre de la aplicación que proporciona el objeto


typename: Oligatorio. El tipo / clase del objeto
location: Opcional. Donde para crear el objeto

txt="This is a beautiful day"


Set objReg=CreateObject("vbscript.regexp")
objReg.Pattern="i"
msgbox(objReg.Replace(txt,"##"))

Th##s is a beautiful day

EVAL (expression)

La función Eval evalúa una expresión, como una función, y devuelve el


resultado.

Creación de un objeto de expresión regular:


function myFunction()
msgbox("Hello world")
end function

eval("myFunction()")

ISOBJECT (expression)

La función IsObject devuelve un valor booleano que indica si la expresión


especificada es un objeto de automatización. Devuelve True si la expresión
es un objeto de automatización; de lo contrario, devuelve Falso.
Set x=CreateObject("vbscript.regexp")
msgbox(IsObject(x))

True

x="Peter"
msgbox(IsObject(x))

False
RGB (red,green,blue)

La función RGB devuelve un número que representa un valor de color RGB.

msgbox(rgb(255,0,0))

255

msgbox(rgb(255,30,30))

1974015
CAPITULO 7: Ejemplos
Vamos a ver algunos ejemplos.

Uso de la función CBOOL

OPTION EXPLICIT
DIM variable
variable = 1
MSGBOX (CBOOL (variable))

El resultado de este código será el siguiente:

La función CBOOL en particular devuelve un valor falso si el argumento es 0 y un valor


verdadero si el argumento es cualquier otro número.
Una observación acerca de las conversiones entre subtipos numéricos. Si un número que
convertimos, p.e., a Byte es muy grande para caber en este subtipo, se truncará. Supongamos la
siguiente sentencia:

numero = CBYTE (567.384.896.456,29).

Esto es claramente una irregularidad, ya que el número es demasiado grande para ser di
subtipo Byte.
Veamos mas ejemplos:

Uso de Funciones de cadena: Instr y Mid


OPTION EXPLICIT
DIM variable
DIM parte_central

variable = CHR (65)


DOCUMENT.WRITE ("Valor de CHR (65): " & variable & "<BR>")

variable = "Alfa"
parte_central = INSTR (variable,"l")
DOCUMENT.WRITE (parte_central & "<BR>")

Variable = "Manzana"
Parte_central = MID (variable, 3, 2)
DOCUMENT.WRITE (parte_central)

Como resultado nos aparece en pantalla lo siguiente:

Valor de CHR (65): A


2
nz
Fíjate en la segunda línea. Es el resultado de la función INSTR. Si analizamos la
correspondiente línea de código veremos que esta función recibe dos argumentos. El primero es la
cadena (o variable que la contiene) donde hay que buscar algo. El segundo es la cadena (o
variable que la contiene) que hay que buscar dentro. El número que devuelve como resultado
(en este caso el 2) es la posición que ocupa la segunda cadena dentro de la primera.
Ahora observa la última línea, con el texto nz. Es el resultado de aplicar la función MID.
Observa la correspondiente línea de código. Ves que esta función recibe tres argumentos. El
primero es una cadena (o la variable que la contiene) de la que se extraerá una sub-cadena. El
segundo es un número (o una variable que contiene un número), que indica que lugar de la cadena
iniciará la sub-cadena. El tercero es un número (o una variable que contiene un número) que indica
cuantos caracteres se cogerán para la sub-cadena. Hay que puntualizar que la cadena original no sufre
amputación ni transformación de ningún tipo.
Otro ejemplo:

Funciones matemáticas

OPTION EXPLICIT
RANDOMIZE

DIM numero
numero = 0

DO UNTIL numero > 0


numero = INPUTBOX ("Introduzca un número")
IF (NOT ISNUMERIC (numero)) THEN
numero = 0
END IF
LOOP
msgbox("El número es: " & numero & vbNewLine)
numero = INT (numero)
msgbox( "La parte entera es: " & numero & vbNewLine &
"El valor hexa es: " & HEX (numero) & vbNewLine &
"Un número aleatorio es: " & RND()
)

Este programa nos pide un número por teclado como ya conocemos. Supongamos que
introducimos 45,7. Los resultados serán los siguientes:

El número es: 45,7


La parte entera es: 45
El valor hexa es: 2D
Un número aleatorio es: 0,1896936

La primera línea nos muestra el número que hemos introducido.


La segunda nos muestra el resultado de obtener la parte entera con la función INT.
La tercera línea nos muestra el valor hexa de 45.
La cuarta línea es un número aleatorio generado con RND(). Esta función siempre
genera un número aleatorio que está entre 0 y 1. Observa que el código incluye la instrucción
RANDOMIZE.
Observa también que se ha usado la función ISNUMERIC para anular la entrada por teclado si
lo que se introdujo no es un número. En este caso se ha precedido la función del operador lógicoNOT.
Consulta el Apéndice C para obtener mas información respecto a los operadores.
Otro ejemplo mas:
Funciones de fecha
OPTION EXPLICIT
DIM fecha
fecha = DATE ()
IF (WEEKDAY (fecha, VBMONDAY) = 7) THEN
msgbox("Hoy es domingo.")
ELSE
msgbox("Hoy se trabaja.")
END IF

Este código recoge, en primer lugar, la fecha del sistema. Si la fecha corresponde a un
domingo, muestra:

Hoy es domingo.

En caso contrario, muestra:

Hoy se trabaja.

Para hacer esto, utiliza la función WEEKDAY, indicando, como primer día de la semana, el
Lunes.

GENERALIDADES FINALES
Recuerda. Las tres diferencias básicas entre funciones de usuario y procedimientos son:

1.La función de usuario se define entre las instrucciones FUNCTION y END FUNCTION. El
procedimiento se define entre SUB y END SUB.
2.Las funciones (de usuario y del lenguaje) devuelven un resultado. Los procedimientos, no.
3.La forma de invocar una función es con su nombre seguido de paréntesis. Si la función
recibe argumentos, éstos van entre los paréntesis. Para invocar un procedimiento hay dos
formas. La primera es el nombre del procedimiento seguido de los argumentos, si los hay,
separados por comas. La segunda es la palabra clave CALL, seguida del nombre del
procedimiento, seguido éste, a su vez de paréntesis. Si hay argumentos, éstos van entre los
paréntesis, seguidos por comas.
CAPITULO 8: Uso avanzado de MSGBOX ()
Hemos visto el uso genérico de MSGBOX. En realidad esta es una función del lenguaje aunque,
por su particular relevancia le vamos a dedicar un capítulo aparte. Esta función tiene muchas mas
posibilidades de las que hemos visto hasta ahora. De hecho sirve para mostrar distintos tipos de
cuadros de confirmación, mensajes o preguntas al usuario. Algunos de esos cuadros tienen varias
posibles actuaciones por parte del usuario y son capaces de identificar cual ha sido la respuesta
elegida y actuar en consecuencia. Como particularidad debemos reseñar que MSGBOX, en todos los
usos que se le den, es una función, ya que devuelve un resultado. Si nos acordamos, existe una
modalidad, la mas simple, que se llamaba como una función:

MSGBOX ("Esto es un resultado")

Esta instrucción no produce mas que un cuadro de mensaje en pantalla y queda esperando a
que el usuario pulse el botón Aceptar. Como ves tiene algo de excepcional. Es una función y no
devuelve ningún resultado. Ahora Veamos una línea un tanto especial:

CALL MSGBOX ("Mensaje", VBOKONLY, "Título")

Fíjate que se está usando la función llamándola como si fuera un procedimiento. Esta línea
produce un resultado idéntico a la anterior.

Ahora vamos a usar la función en toda su plenitud. Supongamos la siguiente línea de código:

confirmacion = MSGBOX ("Mensaje", VBOKCANCEL, "Título")

Esto generará el siguiente cuadro:

A continuación esperará a que el usuario pulse uno de los dos botones. Y ¿ qué se guardará en
la variable confirmación ? Pues un número que será distinto según el botón que haya pulsado el
usuario. Si pulsa en Aceptar se guardará un 1. Si pulsa en cancelar se guardará un 2.
De esta forma, podremos usar, por ejemplo, un condicional para que nuestro programa ejecute
una operación u otra, según la decisión del usuario. Veamos mas posibilidades. Al final de este capítulo
tienes una lista completa de los posibles botones que se muestran a continuación y los valores
numéricos que generan para su posterior identificación.

resultado = MSGBOX ("Mensaje", VBYESNOCANCEL, "Titulo")


Genera el siguiente cuadro:

resultado = MSGBOX ("Mensaje", VBABORTRETRYIGNORE, "Título")

Genera el siguiente cuadro:

resultado = MSGBOX ("Mensaje", VBYESNO, "Título")

Genera el siguiente cuadro:

resultado = MSGBOX ("Mensaje", VBRETRYCANCEL, "Título")

Genera el siguiente cuadro:

resultado = MSGBOX ("Mensaje", VBCRITICAL, "Título")


Genera el siguiente cuadro:

resultado = MSGBOX ("Mensaje", VBQUESTION, "Título")

Genera el siguiente cuadro:

resultado = MSGBOX ("Mensaje", VBEXCLAMATION, "Titulo")

Genera el siguiente cuadro:

resultado = MSGBOX ("Mensaje", VBINFORMATION, "Título")

Genera el siguiente cuadro:


Los diferentes valores que recibiría la variable resultado, según el botón que pulse en cada caso
el usuario, son:

Botón Valor
Aceptar 1
Cancelar 2
Anular 3
Reintentar 4
Ignorar 5
Sí 6
No 7
APÉNDICE A: Jerarquía de objetos en POO.
En éste apéndice vamos a listar los objetos de que disponemos en VBScript, así como sus
distintas propiedades, métodos y eventos. Este apéndice está dedicado a los objetos en el lado del
Cliente. En el lado del servidor, la lista se amplía bastante. Como hemos comentado, este manual
está orientado a VBScript en el lado del Cliente.
Bien. Empecemos asegurando posiciones. Vamos a puntualizar cuatro conceptos cuya
comprensión es vital para entender el funcionamiento de la POO y la jerarquía de objetos.

OBJETO: Un objeto podría ser la ventana de navegación, o el documento activo, o un


campo de un formulario, o una tabla, etc. La lista de los objetos que podemos manejar en VBScript de
Cliente se incluyen en este Apéndice.
PROPIEDAD: Es cada una de las características de un objeto. Una propiedad sería el
color de fondo de una tabla, la barra de estado de la ventana de navegación, etc. También llamamos
propiedad a un objeto derivado de otro. Se dice que el objeto derivado es propiedad del objeto
padre.
METODO: Es una operación que se puede realizar dentro de un objeto. Por
ejemplo. Cerrar una ventana sería un método del objeto ventana. Poner el foco en un campo
de formulario sería un método del objeto que representa a ese campo en concreto.
EVENTO: Un evento es la previsión de que el usuario realice una determinada acción.
En realidad el usuario puede realizar la acción o no realizarla, pero se deja prevista en la
programación la posibilidad de que la realice. De esta forma, si la realiza sucederá algo (lo que
hayamos programado) como respuesta a esa acción. Un evento sería pasar el ratón sobre una
imagen determinada, hacer clic en una parte de la pantalla, pulsar una tecla, etc. También existe la
posibilidad de prever eventos del sistema. Un evento de sistema es, por ejemplo, la carga de una
página, o un error en un proceso. Resumiendo: un evento se dispara cuando ocurre la acción
prevista por el mismo. Supongamos el siguiente código. Utiliza el evento
ONMOUSEOVER, asociado al hiperenlace. Cuando el usuario va a pulsar el enlace y coloca el
puntero del ratón sobre el mismo, se dispara el evento, que llama a la función mensaje(). Esta genera
un cuadro de aviso en la pantalla y obliga al usuario a pulsar el botón Aceptar. Con lo que nunca
podrá usar el enlace.

Evento onMouseOver

FUNCTION mensaje()
MSGBOX ("Nunca podrás pulsarlo")
END FUNCTION

mensaje()

Para referirse a una propiedad o un método de un objeto usamos una notación de puntos.
Así:

OBJETO.PROPIEDAD

O bien:

OBJETO.METODO()

Observa que el método lleva unos paréntesis y la propiedad no. Esto es así porque, en
definitiva, los métodos son casos particulares de funciones, asociadas a objetos. Y, como cabría
esperar, algunos métodos reciben argumentos y otros no. Bien. Veamos la lista de objetos de
VBScript de Cliente.
Veamos otro ejemplo, para afianzar conceptos:
VBScript en el navegador

<A HREF = "http://www.gratisweb.com/infomegacine" ONMOUSEOVER


= "window.status = 'El mejor site de cine';return true">
Pulsa aquí para ver infomegacine
</A>

Aquí podemos ver varias cosas que van mas allá de todo lo estudiado hasta ahora. En primer
lugar vamos a aclarar lo que hace el código. Muestra un hiperenlace y, cuando el usuario pasa el ratón
por encima, muestra un mensaje en la barra de estado, que ya permanece ahí. Bien. Analicemos el
código para ver como funciona. Realmente toda la gracia está en esta línea:

<A HREF = "http://www.gratisweb.com/infomegacine" ONMOUSEOVER


="window.status = 'El mejor site de cine';return true">

La primera parte es un hiperenlace normal de HTML sin mas. Lo primero que nos interesa
ahora es la palabra ONMOUSEOVER, que indica al navegador que detecte la presencia del cursor del
ratón sobre el texto que constituye el hiperenlace. ONMOUSEOVER es el evento que queremos
detectar. A la derecha el signo igual aparece la acción que queremos desencadenar si se produce
el evento especificado. Esta acción aparece entre comillas dobles. En concreto se trata de
establecer un valor para la propiedad status del objeto window; es decir, el contenido de la barra de
estado de la ventana de navegación. En este caso hemos programado que aparezca en la barra de
estado una cadena literal (el mejor site de cine). Fíjate que la cadena de texto aparece encerrada entre
comillas simples. A continuación aparece un signo de punto y coma y la instrucción return true.
Esta última sirve, en este caso, para que el cambio de la barra de estado se produzca de forma
inmediata. De no usarla, al poner el ratón sobre el enlace veremos la dirección de la página
especificada y, solo al quitar el ratón, veremos el mensaje que habíamos programado. Evidentemente
esto último no es lo que perseguíamos. Bien. Casi tenemos completo el estudio de esta línea,
salvo por un pequeño detalle. Palabras reservadas del lenguaje, como son window, status, return y
true aparecen en minúsculas en este ejemplo, cuando hemos dicho que en este temario las palabras
reservadas las poníamos en mayúsculas. Esto es así porque en este caso las instrucciones no han sido
programadas dentro de VBScript, sino directamente en HTML. Existen algunas instrucciones de los
lenguajes de Script que pueden programarse de esta manera (de hecho, algunas veces DEBEN
programarse de esta manera). En estos casos, el navegador no interpreta las instrucciones como de
VBScript, sino como de JavaScript. Y JavaScript (ya lo veremos en el correspondiente temario) es, al
contrario que VBScript, muy exigente con el tema de las mayúsculas y minúsculas. Cada palabra debe
escribirse de un modo exacto, y no de otro, o no funcionará. En la lista que incluyo en éste Apéndice
de objetos, propiedades, métodos y eventos he seguido este último criterio, a fin de familiarizar al
lector con la sintaxis mas adecuada.
La lista de los principales objetos de VBScript es:

•Objeto window
•Objeto location
•Objeto document
•Objeto navigator
•Objeto frame
•Objeto history
•Objeto link
•Objeto anchor
•Objeto form
APÉNDICE A: Propiedades y métodos de los objetos
Como ya hemos mencionado en este temario, los objetos siguen una jerarquía. El de mas alto
nivel es el objeto WINDOW, que representa a la ventana activa. Todos los demás, son objetos
derivados de éste. Veamos cuales son las propiedades y métodos que acepta cada uno, así como los
eventos que les afectan.

Objeto window
Representa la ventana activa del navegador y es el mas alto de la jerarquía.

Propiedades:
defaultStatus se refiere al mensaje que aparecerá por defecto en la barra de estado.
document representa al documento HTML en ejecución en ese momento.
frames [] es una matriz que contiene los frames de la ventana.
representa un registro histórico de las páginas visitadas en la actual sesión de uso de
history
Internet.
length contiene el número total de frames de la ventana.
location representa a la dirección (URL) actual de Internet.
name contiene el nombre de la ventana activa.
navigator representa al navegador que estamos utilizando.
self se refiere a la propia ventana. Es el mismo objeto window.
status es el mensaje que aparece en la barra de estado en un momento determinado.
window representa a la ventana activa o a otra ventana o sub-ventana de navegación.

Métodos:
close () permite cerrar la ventana activa. Su sintaxis es self.close()
permite abrir una nueva ventana, como sub ventana de la actual. Su sintaxis
open ()
es:nueva_ventana = window.open ("URL", "Target", "Opciones")
En la sintaxis expresada, nueva_ventana es el nombre que queremos darle a la sub-ventana.
URL es la dirección de la página que queremos que se cargue en la sub-ventana. Target es la
dirección del frame donde queremos que se abra la nueva ventana (caso de existir frames) como
hacemos en HTML con los hiperenlaces. Opciones son las propiedades de la nueva ventana, de
acuerdo a la siguiente tabla.

propiedad Tipo de dato Explicación


toolbar booleano Ventana con barra de herramientas.
location booleano Ventana con barra de direcciones.
directories booleano Ventana con directorios.
Status booleano Ventana con barra de estado
menubar booleano Ventana con barra de menús.
scrollbars booleano Ventana con barras de desplazamiento.
resizable booleano Ventana de tamaño redefinible por el usuario.
width píxeles Anchura de la ventana
height píxeles Altura de la ventana.
top píxeles Posición Y de la ventana
left píxeles Posición x de la ventana
Eventos:

onLoad Se ejecuta cuando se carga la página.


onUnload Se ejecuta cuando se descarga (se cierra) la página.

Objeto document
Representa el documento activo.

Propiedades:
alinkColor Representa el color de los enlaces activos.
bgColor Representa el color de fondo del documento.
fgColor Representa el color del texto
lastModified Representa la fecha de la última modificación.
linkColor Representa el color de los enlaces.
location Representa la URL del documento.
title Representa el título del documento.
vlinkColor Representa el color de los enlaces visitados.

Métodos:

Write () Escribe un texto.


Writeln() Escribe una línea de texto.

Eventos:

Ninguno

Objeto form
Este objeto se refiere a un formulario empleado en el documento. Se accede a cada formulario
mediante un índice: document.form [índice]
El número de índice se corresponde con el orden de creación de formulario en el documento.

Propiedades:

Representa la URL donde está el programa encargado de procesar un formulario (al que se
action
llama al activar el botón Submit).
length Es el número de elementos del formulario.
method Es el método de envío (GET o POST).

Métodos:

submit Se usa para forzar el envío.

Eventos:

onSubmit Se produce cuando se pulsa el botón Submit del formulario.


Objeto location
Contiene la URL de la página actual

Propiedades:

href Representa la propia URL.


pathname Representa la ruta del disco del servidor donde se aloja la página.

Métodos:

Ninguno.

Eventos:

Ninguno.
Objeto navigator
Representa al navegador actual.

Propiedades:

appName Es el nombre del navegador.


appVersion Se refiere a la versión del navegador.

Métodos:

Ninguno.

Eventos:

Ninguno.
Objeto history
Representa el historial de las páginas visitadas en la sesión actual de uso de Internet

Propiedades:

length Representa la cantidad total de páginas visitadas.

Métodos:

back () navega a la página anterior.


forward() navega a la página siguiente.
go (n) navega n páginas hacia delante (o hacia atrás, si n es negativo).

Eventos:
Ninguno.
Tipos de eventos
Aquí se listan los principales eventos que se pueden asociar a una imagen, hipervínculo, cadena
de texto, etc. A continuación aparecen agrupados según donde se originen (ratón teclado, etc).
Estos eventos son los mas usados. Existen otros, pero no siempre funcionan bien con los dos
navegadores, y además son bastantes exóticos, académicos y de uso poco práctico. No los veremos
aquí.

Eventos de ratón

ONCLICK Se activa con un botón del ratón.


ONDBLCLICK Se activa si se hace un doble click.
ONMOUSEDOWN Se activa si se pulsa el botón izquierdo del mouse.
ONMOUSEMOVE Se activa si se mueve el mouse.
ONMOUSEOVER Se activa cuando el puntero se sitúa sobre el objeto que incluye al evento.
ONMOUSEOUT Se activa cuando el puntero sale del objeto que incluye al evento.
Se activa si se suelta un botón pulsado en el mouse (es contrario a
ONMOUSEUP
ONCLICK).
ONDRAGSTART Se activa cuando se inicia un arrastre.
ONSELECTSTART Se activa cuando se inicia una selección con el ratón.
ONSELECT Se activa cuando se ha realizado una selección con el ratón.

Eventos de teclado

ONKEYDOWN Se activa si se pulsa una tecla cualquiera.


ONKEYPRESS Se activa si se pulsa y suelta una tecla.
ONKEYUP Se activa cuando se suelta una tecla pulsada.
ONHELP Se activa si se pulsa la tecla de ayuda (normalmente F1).

Eventos de enfoque

ONFOCUS Se activa cuando se entra en el ámbito de un elemento al que está asociado el evento.
ONBLUR Se activa al abandonar el ámbito del elemento al que está asociado.

Eventos de formulario

ONRESET Se activa al pulsar un botón de reset de un formulario.


ONSUBMIT Se activa al enviar un formulario.

Eventos de carga de página

ONABORT Se activa cuando se aborta la carga de la página.


Se activa cuando se produce un error inesperado durante la carga de la
ONERROR
página.
ONLOAD Se activa cuando se carga la página.
Se activa cuando el usuario descarga la página (es decir, carga otra o
ONUNLOAD
pretende salir del navegador).
ONAFTERUPDATE Se activa si se actualiza o recarga la página.
APÉNDICE B: Subtipos de datos.
A continuación aparecen listados los subtipos de datos aceptados por VB. Son los siguientes:

String Datos de tipo cadena (también llamado alfanuméricos).


Byte Números enteros del 0 al 255.
Integer Números enteros del -32.768 al 32.767.
Long Números enteros del -2.147.483.648 al 2.147.483.647.
Single Números en coma flotante de simple precisión.
Double Números en coma flotante de doble precisión.
Números en coma flotante del -922.337.203.685.477,5808 al
Currency
922.337.203.685.477,5808.
Boolean Datos lógicos verdadero o falso (true o false).
Null Un dato Variant sin definir contenido de ningún subtipo.
Date Un valor de Fecha / Hora.
Object Contiene la representación de un objeto.
Error Identifica los errores mediante un número.

Una consideración importante respecto a los valores numéricos. Si la configuración regional de


nuestro PC tiene fijado como separador de decimales la coma y el navegador (y por tanto el intérprete
de VBScript) está en castellano, los números decimales deberán introducirse con una coma. Si se
teclea un punto no funcionará bien nuestro código. Consulta el panel de control de tu PC y tu manual
de Windows si tienes dudas al respecto.
APÉNDICE C: Operadores en VBScript.
Aquí vamos a conocer cuales son los operadores que maneja VBScript, clasificados según el
tipo de operación que realizan. Los operadores son unos signos que se usan para realizar
operaciones matemáticas, comparativas, concatenarías o lógicas.

Operadores

Operador Operación
+ Suma aritmética. Concatenación de cadenas.
- Resta aritmética
* Multiplicación aritmética.
/ División (muestra el resultado en coma flotante).
\ División (muestra la parte entera del resultado).
^ Potenciación
Mod Obtiene el módulo de una división
= Igual que
<> No igual que
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
& Concatenación de datos de diferente subtipo.
And Devuelve true si las dos expresiones a ambos lados del operador
son verdaderas.
Or Devuelve true si alguna de las expresiones es verdadera
Xor Devuelve true si sólo una de las dos expresiones es verdadera.
Not Cambia una expresión verdadera en una falsa y viceversa. Devuelve
true si la expresión es falsa.
APÉNDICE D: Mas Ejemplos.

Manejo de Arreglos
Dim Arreglo(3),Mayor,Res
Res=""
Mayor=0

Ubound(Arreglo) 'Total de posiciones en el arreglo

Do

For i=0 to Ubound(Arreglo)


Arreglo(i)=cint(inputbox("Numero "&cstr((i+1))&": "))

next

For x=0 to Ubound(Arreglo) step 1


For y=0 to Ubound(Arreglo) step 1
if Arreglo(x)>Arreglo(y) and Arreglo(x)>Mayor then

if Arreglo(x)>Mayor then
Mayor = Arreglo(x)
end if
exit for
end if
next

next
msgbox "Numero Mayor: " & Mayor

Res=inputbox("Quieres continuar..? S/N")


loop While (Res="S")
Numero menor
dim x,y,z
res=""
x=0
y=0
z=0

Do
y=cint(inputbox("Numero 1:"))
x=cint(inputbox("Numero 2:"))
if x<=y then
z=cint(inputbox("Numero 3:"))
if x<=z then
msgbox "Numero Mayor" & x
else
if y<=z then
msgbox "Numero Mayor: " & y
else
msgbox "Numero Mayor: " & z
end if
end if
else
z=cint(inputbox("Numero 3:"))
if y<=z then
msgbox "Numero Mayor: " & y
else
if x<=z then
msgbox "Numero Mayor: " & x
else
msgbox "Numero Mayor: " & z
end if
end if
end if
Res=inputbox("Quieres continuar..? S/N")
loop While (Res="S")
Menú
Dim opcion,x,y,z,res
res=""
x=0
y=0
z=0

opcion=""

Dim ArregloR(3)

Do

opcion=inputbox("Opcion :")

Select Case opcion


Case "1":
Call NumeroMayor()
Case "2":
Call NumeroMenor()
Case "3":
'Call
ArregloR = ArregloMayor()
msgbox "El arreglo" & ArregloR(2)
Case "4":
Call ArregloMenor()
Case "5":

a=inputbox("Primer Numero :")


b=inputbox("Segundo Numero :")

msgbox "La Suma" & Suma(a,b)

Case "6":
Call ArregloCuenta()
Case Else :
msgbox " Intentalo de nuevo..(1-6) !! "

End Select

Res=inputbox("Quieres continuar..? S/N")

loop While (Res="S")

Public Function NumeroMayor()

Do
y=cint(inputbox("Numero 1:"))
x=cint(inputbox("Numero 2:"))
if x>=y then
z=cint(inputbox("Numero 3:"))
if x>=z then
msgbox "Numero Mayor" & x
else
if y>=z then
msgbox "Numero Mayor: " & y
else
msgbox "Numero Mayor: " & z
end if
end if
else
z=cint(inputbox("Numero 3:"))
if y>=z then
msgbox "Numero Mayor: " & y
else
if x>=z then
msgbox "Numero Mayor: " & x
else
msgbox "Numero Mayor: " & z
end if
end if
end if
Res=inputbox("Quieres continuar..? S/N")
loop While (Res="S")

End Function

Public Function NumeroMenor()

Do
y=cint(inputbox("Numero 1:"))
x=cint(inputbox("Numero 2:"))
if x<=y then
z=cint(inputbox("Numero 3:"))
if x<=z then
msgbox "Numero Mayor" & x
else
if y<=z then
msgbox "Numero Mayor: " & y
else
msgbox "Numero Mayor: " & z
end if
end if
else
z=cint(inputbox("Numero 3:"))
if y<=z then
msgbox "Numero Mayor: " & y
else
if x<=z then
msgbox "Numero Mayor: " & x
else
msgbox "Numero Mayor: " & z
end if
end if
end if
'msgbox y
'msgbox "Quieres continuar..? S/N"
Res=inputbox("Quieres continuar..? S/N")
loop While (Res="S")

End Function

Public Function ArregloMayor()

Dim Arreglo(3),Mayor,Res
Res=""
Mayor=0

Ubound(Arreglo) 'Total de posiciones en el arreglo


Do

For i=0 to Ubound(Arreglo)


Arreglo(i)=cint(inputbox("Numero "&cstr((i+1))&": "))

next

For x=0 to Ubound(Arreglo) step 1


For y=0 to Ubound(Arreglo) step 1
if Arreglo(x)>Arreglo(y) and Arreglo(x)>Mayor then

if Arreglo(x)>Mayor then
Mayor = Arreglo(x)
end if
exit for
end if
next

next
msgbox "Numero Mayor: " & Mayor

Res=inputbox("Quieres continuar..? S/N")


loop While (Res="S")
ArregloMayor=Arreglo
End Function

Public Function ArregloMenor()

Dim Arreglo(3),Menor,Res
Res=""
Menor=0

Ubound(Arreglo) 'Total de posiciones en el arreglo

Do

For i=0 to Ubound(Arreglo)


Arreglo(i)=cint(inputbox("Numero "&cstr((i+1))&": "))

next

For x=0 to Ubound(Arreglo) step 1


For y=0 to Ubound(Arreglo) step 1
if Arreglo(x)<Arreglo(y) and Arreglo(x)<Menor then
if Arreglo(x)<Menor then
Menor = Arreglo(x)
end if
exit for
end if
next

next
msgbox "Numero Mayor: " & Menor

Res=inputbox("Quieres continuar..? S/N")


loop While (Res="S")

End Function

Public Function ArregloCuenta()


Dim Arreglo(3,1),Res
Res=""

Ubound(Arreglo) 'Total de posiciones en el arreglo

Do

For i=0 to Ubound(Arreglo)


Arreglo(i,0)=cint(inputbox("Numero "&cstr((i+1))&": "))
next

For x=0 to Ubound(Arreglo) step 1


For y=0 to Ubound(Arreglo) step 1
if Arreglo(x,0)=Arreglo(y,0) and j<>i then
'if Arreglo(x)>Mayor then
Arreglo(x,1)=Arreglo(x,1)+1
'end if
end if
'exit for
next
msgbox "Cantidad del Numero "& Arreglo(x,1) & " : " & Arreglo(x,1)
next

Res=inputbox("Quieres continuar..? S/N")


loop While (Res="S")

End Function

Public Function Suma(ByVal a,ByVal b)

Dim z
z=0
'Dim a,b
'a=0
'b=0
z=cint(a)+cint(b)

Suma=z

End Function

50 veces
Sub HazMiProc50Veces()
Dim x,y
For x = 1 To 50 Step 1
y=y+x
Next
Msgbox x-1
End Sub
CALL HazMiProc50Veces()

Limites
Sub ValorDevuelto(valor)
If valor = 0 Then
MsgBox valor
ElseIf valor = 1 Then
MsgBox valor
ElseIf valor = 2 then
Msgbox valor
Else
Msgbox "¡Valor fuera de límites!"
End If
End Sub

call ValorDevuelto(3)

Ultimo
Sub CompUltimoWhile()
Dim contador, miNum
contador = 0
miNum = 9
Do
miNum = miNum - 1
contador = contador + 1
Loop While miNum > 10
MsgBox "El ciclo se ejecuto " & contador & " repeticiones."
End Sub
CALL CompUltimoWhile()

Temperatura
Sub ConvertirTemp()
temp = InputBox("Escriba la temperatura en grados Farenheit.", 1)
MsgBox "La temperatura es de " & Celsius(temp) & " grados Celsius."
End Sub

Function Celsius(fGrados)
Celsius = (fGrados - 32) * 5 / 9
End Function
CALL ConvertirTemp()

Compara Primero
Sub CompPrimerUntil()
Dim contador, miNum
contador = 0
miNum = 20
Do Until miNum = 10
miNum = miNum - 1
contador = contador + 1
Loop
MsgBox "El ciclo se ejecuto " & contador & " veces."
End Sub

CALL CompPrimerUntil()
Mi Fecha
Sub FechaFija()
Dim FechaFija
Dim miFecha
miFecha = #12/05/95#
if miFecha <Now Then miFecha=Now
msgbox miFecha
End Sub

call FechaFija()

Split
Dim StrNombresAux
d="Bernardo-Alonso-Mejia-Ortiz"

Myarr=split(d,"-")

msgbox Myarr(0)
msgbox Myarr(1)
msgbox Myarr(2)
msgbox Myarr(3)

Validaciones de tipos de variables


msgbox "Validar el tipo de variable"
set WshShell = CreateObject("WScript.Shell")
'call fnValidarTipoVariable(WshShell)
'x=null
'x="01-02-2012"
dim xz
msgbox xz

call fnValidarTipoVariable(xz)
public function fnValidarTipoVariable(var)

if isnumeric(var)=true then
msgbox "La varible x es numerica"
else
if IsArray(var)=true then
msgbox "La varible x es un array"
else
if IsDate(var)=true then
msgbox "La varible x es fecha"
else
if IsNull(var)=true then
msgbox "La varible x esta nula"
else
if IsObject(var)=true then
msgbox "La varible x es un objeto"
else
msgbox "No se encuentró tipo de variable"
end if
end if
end if
end if
end if
end function
Función con parámetros que genera la suma de dos números
msgbox "Regresar un resultado con Funciones."
public Function IntSumar3(x,y)

r=x+y
IntSumar3=r

end function

x= IntSumar3(5,10)
msgbox x
APÉNDICE E: Forma de generación de archivos .vbs
desde un inicio.
1.- Generar el Archivo de inicio como .txt
2.- Modificar la Extensión a .vbs

3.- Darle aceptar a la advertencia.


4.- Abrirlo con algún editor y puedes comenzar.

5.- Para ejecutarlo solo darle doble clik al icono del archivo desde Windows.
APÉNDICE F: VBScript Palabras clave.
Palabra
Descripción

Empty
Se utiliza para indicar un valor de la variable sin inicializar. Un valor de la variable no
está inicializada cuando se creó por primera vez y no hay ningún valor asignado a la
misma, o cuando un valor de la variable se establece explícitamente que vaciar.

ejemplo:
Dim x 'la variable x no está inicializado!
x="ff" 'la variable x no está inicializado más
x=Empty 'la variable x no está inicializado!

Nota: Esto no es lo mismo que Null !!

IsEmpty
Se utiliza para probar si una variable es inicializada.
Ejemplo:
If (IsEmpty(x)) 'es x sin inicializar?

Nothing
Utiliza para indicar un valor de objeto no inicializado, o des-asociar una variable de
objeto de un objeto de liberar los recursos del sistema.

Ejemplo:

Set myObject=Nothing

Is Nothing
Se utiliza para probar si un valor es un objeto inicializado.

Ejemplo:
If (myObject Is Nothing) ''es unset?

Nota: Si tu comparas el valor de Nothing, no podras obtener un resultado aceptable!

Example:
If (myObject = Nothing) 'siempre falsa!

Null
Se utiliza para indicar que una variable no contiene datos válidos.
Una manera de pensar de los No es que alguien ha establecido explícitamente el
valor a "invalid", a diferencia de vacío, donde el valor es "not set".

Nota: Esto no es el mismo que el Empty o Nothing !!


Ejemplo:
x=Null 'x no contiene datos válidos

IsNull
Se utiliza para probar si un valor contiene datos no válidos.
Ejemplo:
if (IsNull(x)) 'es x inválida?

True
Se utiliza para indicar una condición booleana que es correcto (verdadero tiene un
valor de -1)

False
Usado para indicar una condición booleana que no es correcto (falso tiene un valor
de 0)

También podría gustarte