You are on page 1of 13

Inicio Artculo Lenguajes de script VBScript

VBScript

Elementos bsicos
Comentarios
Literales


Elementos bsicos

El lenguaje VBScript tiene fama por la sencillez de su aprendizaje. No diferencia entre maysculas
y minsculas y asegura poseer un nico tipo de datos.

Lo primero que vamos a ver son los ladrillos bsicos del lenguaje. Las cosas que no sirven para
nada solas pero que es imprescindible aprender antes que nada. El rollo terico, vamos.
. Comentarios

Lo primero (por ser lo ms fcil) es indicar cmo se ponen los comentarios. Un comentario es una
parte de nuestro programa que el ordenador ignora y que, por tanto, no realiza ninguna tarea. Se
utilizan generalmente para poner en lenguaje humano lo que estamos haciendo en el lenguaje de
programacin y as hacer que el cdigo sea ms comprensible.

En VBScript, cuando se pone un apstrofe (') se supone que el resto de la lnea es un comentario.
Tambin son comentarios las lneas que comienzan con la palabra reservada Rem.

Rem Soy un comentario
i = 2 ' y yo tambin

. Literales

Se llama as a los valores que puede tomar una variable o una constante. En VBScript pueden ser
cadenas, nmeros enteros, nmeros reales, fechas y valores booleanos:

"Soy una cadena"
3434
3.43
#1-4-1999#
True, False

Datos
Tipos de datos
Variables
Objetos
Vectores y matrices
Constantes


Datos
. Tipos de datos

Un tipo de datos es la clase de valores que puede tomar un identificador (es decir, una variable o
una constante). Si el tipo de datos es fecha, el identificador que tenga ese tipo slo podr
almacenar fechas. En VBScript, todas las variables y constantes toman un tipo de datos nico
llamado Variant. Lo que contengan realmente depende del subtipo que tome Variant. Aparte de
poder tomar cadenas, varios tipos de enteros y reales, valores booleanos y fechas, puede tener
tambin estos tipos:
Tipo Descripcin
empty Todava no tiene tipo
null Tipo invlido (para que tome este tipo hay que asignarlo explcitamente)
object Una referencia a un objeto
error Un cdigo numrico que indica un error
. Variables

Las variables son nombres que ponemos a los lugares donde almacenamos la informacin. Aunque
no es estrictamente necesario declarar variables antes de usarlas, siempre es recomendable
hacerlo, por claridad del cdigo. Para ello tenemos tres palabras reservadas: Dim, Public y Private.
La diferencia entre ellas es el mbito en el que las variables declaradas sern vlidas. Usando
Public la variable ser accesible desde cualquier parte del cdigo. Usando Dim ser accesible slo
en la funcin o procedimiento en que se declara; pero si se declara fuera de ellos ser accesible a
todo el mundo. Utilizando Private, en cambio, la variable slo ser accesible para el nivel en el que
est. Ningn procedimiento podr acceder a una variable privada declarada en fuera de l. Vamos
a verlo con un ejemplo:

Dim Variable1 'Accesible fuera y dentro de Pruebas
Public Variable2 'Accesible fuera y dentro de Pruebas
Private Variable3 'Accesible slo fuera de Pruebas
Sub Pruebas
Dim Variable4 'Accesible slo dentro de Pruebas
Public Variable5 'Accesible fuera y dentro de Pruebas
Private Variable6 'Accesible slo dentro de Pruebas
End Sub

Se pueden declarar varias variables en una misma sentencia separndolos por comas:

Dim Yo, Tu, El, Ella, Nosotros, Vosotros, Ellos

Si usas una variable sin haberla declarado se asume que lo has hecho con Dim en el mbito en que
la ests usando. Si la usas en una funcin, por ejemplo, se trabaja con ella como si la hubieras
declarado previamente en esa misma funcin.

El tipo de la variable es Variant, pero... y el subtipo? Ser aquel que tenga el valor que asignemos
a la misma. Por ejemplo, si escribimos

B = 200

estaremos asignando un subtipo entero a la variable B.
. Objetos

Un objeto es un conjunto de variables y subprogramas que modifican dichas variables. Un ejemplo
de objeto es la ventana de nuestro navegador. Entre sus variables puede estar una que tenga el
texto que contiene la ventana y entre sus subprogramas algunos que permitan cambiar, aadir o
borrar dicho texto.

Dependiendo del lugar donde se est ejecutando VBScript, se tendr acceso a unos objetos u
otros. Si ese lugar es el Internet Explorer, existirn objetos para referirse a la ventana, al
documento, a los botones de los formularios, a los grficos includos en la pgina, etc.. Para
acceder a ellos debemos usar referencias. Mientras que la mayora de los subtipos se pueden
asignar a un valor directamente, en este caso deberemos usar una sentencia Set:

Dim referencia
Set referencia = objeto

A partir de ese momento podemos usar referencia como si del objeto final se tratara.
. Vectores y matrices

Estos tipos de datos complejos son un conjunto ordenado de elementos, cada uno de los cuales es
una variable distinta. Y estos s que hay que declararlos. De este modo:

Dim MiEstupendoVector(20)
Dim MiMaravilllosaMatriz(3,6)

Lo que pasa es que el vector tendr 21 elementos y la matriz... eh... 4*7... 28, ya que en VBScript el
lmite inferior de los ndices de todos los vectores y matrices es cero, siendo el lmite superior el
especificado en la declaracin. Para acceder a los valores deberemos hacerlo utilizando de nuevo
los parntesis:

MiMaravillosaMatriz(2,1) = "Un valor al azar"

Si queremos a mitad del programa cambiar el nmero de elementos de una matriz (o vector), no
tenemos ms que usar la palabra reservada ReDim:

ReDim Preserve MiMaravilllosaMatriz(6,6)

Aadiendo Preserve conseguimos que la matriz mantenga los datos que le hayamos asignado
desde la declaracin inicial hasta esta ampliacin.
. Constantes

Una constante es una variable a la que no se le puede cambiar el valor al que est asignada. Se
declaran mediante Const:

Const CapitalDeFrancia = "Paris"


Artculo
Inicio Artculo Lenguajes de script VBScript
4
votar!

VBScript

Operadores
Operadores aritmticos
Operadores de comparacin
Operadores lgicos


Operadores

Los operadores nos permiten unir identificadores y literales para formar expresiones. Las
expresiones son el resultado de operaciones mtemticas o lgicas. Un literal o una variable son
expresiones, pero tambin lo son esos mismos literales y variables unidos entre s mediante
operadores.
. Operadores aritmticos

Estos operadores nos permiten realizar operaciones aritmticas. El ejemplo clsico es el siguiente:

2 + 2

Aqu el operador sera + e indicara que 2 y 2 deben sumarse, lo que dara (espero) como resultado
4. VBScript dispone de los siguientes operadores aritmticos:
Descripcin Smbolo Expresin de ejemplo Resultado del ejemplo
Exponenciacin ^ 2^4 16
Multiplicacin * 2*4 8
Divisin / 5/2 2.5
Divisin entera \ 5\2 2
Resto de una divisin entera Mod 5 Mod 2 1
Suma + 2+2 4
Resta - 7-2 5
Concatenacin de cadenas & "Hola, " & "mundo" "Hola, mundo"
Menos unario - -(2+4) -6

Los operadores tienen distinta precedencia (se calculan unos antes que otros). As, se realiza antes
la multiplicacin que la suma. Para modificar esta precedencia se usan los parntesis. Las
expresiones encerradas entre parntesis sern siempre las primeras en calcularse.

La concatenacin de cadenas no es un operador aritmtico propiamente dicho, ya que devuelve
una cadena, y no un nmero como todos los dems.
. Operadores de comparacin

Estos operadores se utilizan para comparar dos expresiones, devolviendo un valor lgico que
evala si la comparacin es verdadera o falsa. Se utilizan en las estructuras de control que
veremos en el prximo captulo. VBScript dispone de los siguientes:
Descripcin Smbolo Expresin de ejemplo Resultado del ejemplo
Igualdad = 2 = 2 Verdadero
Desigualdad <> 2 <> 2 Falso
Menor que < 2 < 2 Falso
Mayor que > 3 > 2 Verdadero
Menor o igual que <= 2 <= 2 Verdadero
Mayor o igual que >= 1 >= 2 Falso
Equivalencia entre referencias a objetos Is Set a = document
a Is document Verdadero
. Operadores lgicos

Estos operadores permiten comprobar a la vez varios resultados lgicos:
Descripcin Smbolo Expresin de ejemplo Resultado del ejemplo
Negacin Not Not (2 = 2) Falso
Y And (2 = 2) And (2 >= 0) Verdadero
Or (2 = 2) Or (2 <> 2) Verdadero
exclusivo Xor (2 = 2) Xor (2 >= 0) Falso
Igualdad lgica Eqv (2 = 2) Eqv (2 <> 2) Falso
Implicacin lgica Imp (2 = 2) Imp (3 <> 2) Verdadero

Quiz los tres ltimos, pese a tener ejempo, requieran una explicacin ms amplia: Xor devuelve
verdadero cuando los dos trminos que compara son distintos (uno es verdadero y el otro falso),
Eqv hace exactamente lo contrario e Imp comprueba que los dos trminos son coherentes con una
implicacin lgica (x => y), siendo por tanto verdadero excepto en el caso en que x es verdadero e
y falso.

Artculo
Inicio Artculo Lenguajes de script VBScript
4
votar!

VBScript

Estructuras de control
Bifurcaciones condicionales
Bucles


Estructuras de control

Ningn programa es una secuencia lineal de instrucciones. En todo lenguaje de programacin
existen estructuras que nos permiten variar el orden de ejecucin dependiendo de ciertas
condiciones. Estas estructuras se pueden clasificar en dos grandes grupos: bifurcaciones
condicionales y bucles.
. Bifurcaciones condicionales

Una bifurcacin condicional en una estructura que realiza una tarea u otra dependiendo del
resultado de evaluar una condicin. En VBScript la sentencia de bifurcacin bsica es la estructura
If - Then - Else. Como es la que utilizan todos los lenguajes imperativos del universo terrenal (o
casi) vamos a verla con un ejemplo:

If dinero = 0 Then
MsgBox "Ests en la ms absoluta de las miserias"
ElseIf dinero >= 100000000 Then
MsgBox "Estas forrado, oye"
Else
Msgbox "Tampoco me iba a casar contigo por dinero, la verdad"
End If

Como os podis imaginar, este cdigo comprueba primero si la variable dinero es igual a cero. En
caso afirmativo muestra en pantalla el primer mensaje. En otro caso comprueba si tenemos...
bueno, si tenemos mucho dinero para sacar el segundo mensaje. Finalmente si no es ninguno de
los dos casos ensea el tercer mensaje. Hay que indicar que End If slo es necesario ponerlo
cuando nuestra estructura If - Then - Else ocupa ms de una lnea.

Existe un caso bastante comn de bifurcacin en el que se miran todos los posibles valores de una
variable, ejecutndo una tarea u otra dependiendo de ello. En VBScript esto se hace por medio de
la sentencia Select Case:

Select Case Pelo
Case "Rubio"
MsgBox "Los caballeros las prefieren rubias"
Case "Moreno"
MsgBox "Pero se casan con las morenas"
Case Else
MsgBox "Ya no me s ms refranes estpidos, lo siento"
End Select

Es menos flexible que la anterior sentencia estudiada, pero ms cmoda y legible si nuestro caso
se adapta a ella.
. Bucles

Un bucle es una estructura que permite repetir una tarea un nmero de veces, determinado por
una condicin. De nuevo comenzaremos viendo por el ms flexible, el bucle Do...Loop. Este bucle
itera indefinidamente las sentencias contenidas en su interior hasta que se cumple (o deja de
cumplir) una condicin. Esta condicin se puede poner al principio (junto al do) o al final (junto al
loop), variando de ese modo el momento en que se comprueba, y precedida de la palabra while (si
queremos que se itere mientras se cumpla) o la palabra until (si lo que deseamos es que itere
mientras no se cumpla). Para mostrar estas diferencias, en el siguiente ejemplo:

i = 0
Do Until i = 10
i=i+1
Loop

i sera 10, mientras que aqu:

i = 0
Do
i=i+1
Loop While i = 10

i tendra el valor 1. Por ltimo, hay que decir que la ejecucin de la sentencia Exit Do en cualquier
punto del interior del bucle provoca la salida inmediata del mismo. Es conveniente, sin embargo,
evitar su uso porque puede convertir el cdigo en algo parecido a un jeroglfico egipcio antes de
encontrar la piedra Rossetta.

Un bucle muy comn es el numrico. El siguiente ejemplo calcula el factorial de un nmero
usando un bucle For..Next:

Numero = 4
For x = Numero - 1 To 1 Step -1
Numero = Numero * x
Next

En la primera iteracin x es igual a Numero - 1 (es, decir, 3). Se ejecuta lo de dentro, con lo que
nmero ser igual a 4*3=12. Cuando llegamos al Next sumamos a x el valor contenido que viene
despus del Step (si no ponemos esta palabra reservada se asume que este valor es 1), por lo que
x ser ahora 3 y comprobamos que no ha llegado todava al valor 1. Cuando lo haga, despus de
dos iteraciones, hay que precisar que realizar una iteracin ms con x=1, y despus de esta la
ejecucin se saldr del bucle.

Este bucle tambin tiene su puerta de atrs, llamada Exit For. Las mismas consideraciones que con
el anterior caso.

Por ltimo, una variacin de este bucle es For Each...Next, que nos permitir recorrer vectores. El
siguiente ejemplo inicializara un vector:

Dim vector(8)
For Each indice in vector
vector(indice) = "No tengo nada"
Next

El bucle recorrera los 9 elementos del vector, siendo indice el nmero del elemento que est
recorriendo en ese preciso momento.

Artculo
Inicio Artculo Lenguajes de script VBScript
4
votar!

VBScript

Subprogramas
Subrutinas
Funciones


Subprogramas

Incluso los programas ms sencillos tienen la necesidad de dividirse. En VBScript existen dos tipos
de subprogramas: las funciones y las subrutinas.
. Subrutinas

Una subrutina es un conjunto de sentencias que no devuelven nada, pero pueden recibir
argumentos. Se escriben as:

Sub EscribirDeclaracionAmor()
MsgBox "Je t'aime, y t sin saberlo"
End Sub

En este caso no recibe argumentos, as que ponemos los parntesis vacos. Para llamarlos existen
dos posibilidades:

Call Subrutina(Argumento1, Argumento2)
Subrutina Argumento1, Argumento2

. Funciones

Se diferencian de las subrutinas en que stos s que devuelven un dato (de tipo Variant, para
variar). Para hacerlo se supone que existe una variable con el mismo nombre que la funcin, que
contendr ese valor de retorno. Por ejemplo:

Function Factorial(Numero)
If Numero <= 1 Then
Factorial = 1
Else
Factorial = Numero * Factorial (Numero - 1)
End If
End Function

Vemos que tanto los argumentos como el valor de retorno se usan como cualquier otra variable.
Para llamar a una funcin tenemos una sla posibilidad:

Funcion(Argumento1, Argumento2)

You might also like