Site hosted by Angelfire.com: Build your free website today!

Programación
Fundamentos de la Programación

          Cada módulo de formulario contiene procedimientos de evento (secciones de código donde se colocan las instrucciones que se ejecutarán como respuesta a eventos específicos). Los formularios pueden contener controles. Por cada control de un formulario, existe el correspondiente conjunto de procedimientos de evento en el módulo de formulario. Además de procedimientos de evento, los módulos de formulario pueden contener procedimientos generales que se ejecutan como respuesta a una llamada desde cualquier procedimiento de evento.

           El código que no esté relacionado con un control o un formulario específico se puede colocar en un tipo diferente de módulo, un módulo estándar (.bas). Se deben colocar en un módulo estándar los procedimientos que se puedan utilizar como respuesta a eventos de diversos objetos, en lugar de duplicar el código en los procedimientos de evento de cada objeto.
 


 
 
 
  Cómo Funciona una Aplicación controlada por Eventos 

         Un evento es una acción reconocida por un formulario o un control. Las aplicaciones controladas por eventos ejecutan código Basic como respuesta a un evento. Cada formulario y control de Visual Basic tiene un conjunto de eventos predefinidos. Si se produce uno de dichos eventos y el procedimiento de evento asociado tiene código, Visual Basic llama a ese código.

          Aunque los objetos de Visual Basic reconocen automáticamente un conjunto predefinido de eventos, usted decide cuándo y cómo se responderá a un evento determinado. A cada evento le corresponde una sección de código (un procedimiento de evento). Cuando desea que un control responda a un evento, escribe código en el procedimiento de ese evento.

          Los tipos de eventos reconocidos por un objeto varían, pero muchos tipos son comunes a la mayoría de los controles. Por ejemplo, la mayoría de los objetos reconocen el evento Click: si un usuario hace clic en un formulario, se ejecuta el código del procedimiento de evento Click del formulario; si un usuario hace clic en un botón de comando, se ejecuta el código del procedimiento de evento Click del botón. El código en cada caso será diferente.

He aquí una secuencia típica de eventos en una aplicación controlada por eventos:
 

  • Se inicia la aplicación y se carga y muestra un formulario.
  • El formulario (o un control del formulario) recibe un evento. El evento puede estar causado por el usuario (por ejemplo, por la pulsación de una tecla), por el sistema (por ejemplo, un evento de cronómetro) o, de forma indirecta, por el código (por ejemplo, un evento Load cuando el código carga un formulario).
  • Si hay código en el procedimiento de evento correspondiente, se ejecuta.
  • La aplicación espera al evento siguiente.

 

  Variables
Alcances de las Variables


          El alcance de una variable define qué partes del código son conscientes de su existencia. Cuando declara una variable en un procedimiento, sólo el código de dicho procedimiento puede tener acceso o modificar el valor de la variable; tiene un alcance que es local al procedimiento.

          A veces, sin embargo, se necesita utilizar una variable con un alcance más general, como aquella cuyo valor está disponible para todos los procedimientos del mismo módulo o incluso para todos los procedimientos de toda la aplicación. Visual Basic le permite especificar el alcance de una variable cuando la declara.
 


 
 
 
  Establecimiento del Alcance de las Variables 

  Dependiendo de cómo se declara, una variable tiene como alcance un procedimiento (local) o un módulo.
 

Alcance Privado   Público
Nivel de procedimiento Las variables son privadas del procedimiento en el que aparecen. No es aplicable. No puede declarar variables públicas dentro de un procedimiento.
Nivel de módulo Las variables son privadas del módulo en el que aparecen. Las variables están disponibles para todos los módulos.

 


  Variables Utilizadas en un Procedimiento

          Las variables a nivel de procedimiento sólo se reconocen en el procedimiento en el que se han declarado. Se las conoce también como variables locales. Se declaran mediante las palabras clave Dim o Static. Por ejemplo: 

Dim intTemp As Integer

–  o bien  –

Static intPermanent As Integer

          Los valores de variables locales declaradas con Static existen mientras se ejecuta la aplicación, mientras que las variables declaradas con Dim sólo existen mientras se ejecuta el procedimiento.

           Las variables locales resultan una elección apropiada para cálculos temporales. Por ejemplo, puede crear una docena de procedimientos distintos que contengan una variable llamada intTemp. Como cada intTemp se ha declarado como una variable local, cada procedimiento sólo reconoce su propia versión de intTemp. 

          Cualquier procedimiento puede alterar el valor de su intTemp local sin que ello afecte a las variables intTemp de los demás procedimientos.
 


 
 
 
  Variables Utilizadas en un Módulo 

          De forma predeterminada, una variable a nivel de módulo está disponible para todos los procedimien tos del módulo, pero no para el código de otros módulos. Cree variables a nivel de módulo declarándolas con la palabra clave Private en la sección Declaraciones al principio del módulo. Por ejemplo:

Private intTemp As Integer

          A nivel de módulo, no hay diferencia entre Private y Dim, pero es preferible Private porque contrasta con Public y hace que el código sea más fácil de comprender.
 


 
 
  Variables Utilizadas por Todos los  Módulos 

         Para hacer que una variable a nivel de módulo esté disponible para otros módulos, utilice la palabra clave Public para declarar la variable. Los valores de las variables públicas están disponibles para todos los procedimientos de la aplicación. 

          Al igual que todas las variables a nivel de módulo, las variables públicas se declaran en la sección Declaraciones al principio del módulo. Por ejemplo:
Public intTemp As Integer

Nota:  No puede declarar variables públicas en un procedimiento, sólo en la sección Declaraciones de un módulo.
 


 
   
  Declaración de Variables 

La forma de declarar las variables es la siguiente:

Dim| Public| Static nombre_variable As tipo

Dim: Al declarar una variable con esta palabra estamos diciendo que la variable sea local al ámbito en que se declara. Puede ser dentro de un procedimiento o dentro de un formulario, de esta forma no sería accesible desde los demás procedimientos o formularios.

Public: Las variables declaradas serán publicas y podrán estar accesibles desde todos los formularios de la aplicación. Para conseguirlo tendremos que declararlas en un módulo de código, no en la sección declarations de cualquier formulario de los que conste la aplicación. Para crear un módulo de código en el menú principal de Visual Basic marcamos en PROYECTO/INSETAR MÓDULO y aparecerá junto a los demás formularios de la ventana de proyecto aunque con un icono distinto indicando que se trata de un módulo de código.

Static: Con esta forma de declarar variables conseguiremos que las variables locales no se creen y se destruyan al entrar y salir de los procedimientos donde fueron declaradas sino que se mantenga su valor durante todo el periodo de ejecución de la aplicación. De esta forma a entrar en algún procedimiento las variables recuerdan el valor que tenían cuando se salió de él.
 


 
 
 
  Tipos de Variables 

Tipo

Comentario

BOOLEAN Sólo admite 2 valores TRUE o FALSE
BYTE  Admite valores entre 0 y 255
INTEGER Admite valores entre -32768 y 32767
LONG  Admite valores entre -2.147.483.648 y 2.147.483.647
SINGLE  Admite valores decimales con precisión simple
DOUBLE  Admite valores decimales de doble precisión
CURRENCY  Válido para valores de tipo moneda
STRING  Cadenas de caracteres (Texto)
DATE  fechas, permite operar con ellas

 


 Matrices 

          Para declarar matrices debemos colocar entre paréntesis el número de elementos de los que constará a continuación del nombre de la variable:

Dim medidas(9) as integer 

         De esta forma tenemos una matriz de 10 elementos identificados del 0 al 9

         Podemos obligar a que el primer elemento de una matriz tenga el índice con valor 1.

         Esto lo haremos colocando la instrucción option base 1 en la sección declarations de nuestro formulario.

         También podemos indicar los límites inferior y superior de la matriz:

Dim medidas(5 to 14) as integer

lo que seria  una matriz de 10 elementos cuyos indices van del 5 al 14

Las matrices multidimensionales se declaran de la siguiente forma:

Dim medidas(1 to 10, 1 to 10) as integer
 


 
 
 
  Consideraciones 

          Al trabajar con Visual Basic es preferible que activemos la opción que nos obligue a declarar todas las variables que utilicemos, de esta forma nos ahorraremos errores inesperados como el de trabajar con una variable ya utilizada anteriormente produciéndose un conflicto díficil de resolver. 

          En cambio si intentamos declarar 2 variables con el mismo nombre, en el mismo formulario o procedimiento se produce un error en tiempo de edición avisándonos de la situación.

          Para activar esta opción debemos ir a la opción del menú Herramientas y Opciones para que aparezca un cuadro de dialogo como este.

           La opción que nos interesa activar es Requerir declaración de variables que en este caso ya lo está. De esta forma en cada sección declarations de cada formulario aparecerá la sentencia option explicit

           Otra opción que es interesante activar, es la de Guardar los cambios en la ficha entorno, la cual te guarda una copia del código antes de ejecutarlo por si acaso luego no podemos, se bloquea la aplicación etc... no suele pasar pero nunca se sabe. De esta forma te aseguras que lo último que hayas ejecutado lo tenes guardado en el disco.

           La opción Comprobación automática de sintaxis normalmente viene activada por defecto, no conviene desactivarla puesto que te avisa de errores de sintaxis conforme vas escribiendo el código: Si te falta el then después del if, el do antes del while etc...
 


 
 
 
  Procedimientos y Funciones
Introducción a los Procedimientos

          Puede simplificar las tareas de programación si divide los programas en componentes lógicos más pequeños. Estos componentes, llamados procedimientos, pueden convertirse en bloques básicos que le permiten mejorar y ampliar Visual Basic.

          Los procedimientos resultan muy útiles para condensar las tareas repetitivas o compartidas, como cálculos utilizados frecuentemente, manipulación de texto y controles, y operaciones con bases de datos.

          Hay dos ventajas principales cuando se programa con procedimientos:
 

  • Los procedimientos le permiten dividir los programas en unidades lógicas discretas, cada una de las cuales se puede depurar más fácilmente que un programa entero sin procedimientos.
  • Los procedimientos que se utilizan en un programa pueden actuar como bloques de construcción de otros programas, normalmente con pocas o ninguna modificación. 


En Visual Basic se utilizan varios tipos de procedimientos:

  • Procedimientos Sub que no devuelven un valor.
  • Procedimientos Function que devuelven un valor (normalmente conocidos como funciones).


 
 
  Procedimientos
[Procedimientos Generales]
[Procedimientos de Evento]
[Llamadas a Procedimientos]

          Un procedimiento Sub es un bloque de código que se ejecuta como respuesta a un evento. Al dividir el código de un módulo en procedimientos Sub, es más sencillo encontrar o modificar el código de la aplicación. 

La sintaxis de un procedimiento Sub es la siguiente:

[Private|Public][Static]Sub nombre_procedimiento (argumentos)
 instrucciones
End Sub

          Cada vez que se llama al procedimiento se ejecutan las instrucciones que hay entre Sub y End Sub. Se pueden colocar los procedimientos Sub en módulos estándar, módulos de clase y módulos de formulario. 

          De forma predeterminada, los procedimientos Sub son Public en todos los módulos, lo que significa que se les puede llamar desde cualquier parte de la aplicación.

          Los argumentos de un procedimiento son como las declaraciones de variables; se declaran valores que se pasan desde el procedimiento que hace la llamada.

          Resulta muy útil en Visual Basic distinguir entre dos tipos de procedimientos Sub, procedimientos generales y procedimientos de evento.


Procedimientos generales

           Un procedimiento general indica a la aplicación cómo realizar una tarea específica. Una vez que se define un procedimiento general, se le debe llamar específicamente desde la aplicación. Por el contrario, un procedimiento de evento permanece inactivo hasta que se le llama para responder a eventos provocados por el usuario o desencadenados por el sistema.

          ¿Por qué crear procedimientos generales? Una razón es que muchos procedimientos de evento distintos pueden necesitar que se lleven a cabo las mismas acciones. Es una buena estrategia de programación colocar las instrucciones comunes en un procedimiento distinto (un procedimiento general) y hacer que los procedimientos de evento lo llamen. 

          Esto elimina la necesidad de duplicar código y también hace que la aplicación sea más fácil de mantener. 


Procedimientos de evento

         Cuando un objeto en Visual Basic reconoce que se ha producido un evento, llama automáticamente al procedimiento de evento utilizando el nombre correspondiente al evento. Como el nombre establece una asociación entre el objeto y el código, se dice que los procedimientos de evento están adjuntos a formularios y controles. 
 

  • Un procedimiento de evento de un control combina el nombre real del control (especificado en la propiedad Name), un carácter de subrayado (_) y el nombre del evento. Por ejemplo, si desea que un botón de comando llamado cmdPlay llame a un procedimiento de evento cuando se haga clic en él, utilice el procedimiento cmdPlay_Click.
  • Un procedimiento de evento de un formulario combina la palabra "Form", un carácter de subrayado y el nombre del evento. Si desea que un formulario llame a un procedimiento de evento cuando se hace clic en él, utilice el procedimiento Form_Click. (Como los controles, los formularios tienen nombres únicos, pero no se utilizan en los nombres de los procedimientos de evento.)


Todos los procedimientos de evento utilizan la misma sintaxis general.

Sintaxis de un evento de control Sintaxis de un evento de formulario

Private Sub nombrecontrol_nombreevento (argumentos )
   instrucciones
End Sub 

Private Sub Form_nombreevento (argumentos)
   instrucciones
End Sub

         Aunque puede escribir procedimientos de evento nuevos, es más sencillo utilizar los procedimientos de código que facilita Visual Basic, que incluyen automáticamente los nombres correctos de procedimiento. 

         Puede seleccionar una plantilla en la ventana Editor de código si selecciona un objeto en el cuadro Objeto y selecciona un procedimiento en el cuadro Procedimiento.

         También es conveniente establecer la propiedad Name de los controles antes de empezar a escribir los procedimientos de evento para los mismos. Si cambia el nombre de un control tras vincularle un procedimiento, deberá cambiar también el nombre del procedimiento para que coincida con el nuevo nombre del control. De lo contrario, Visual Basic no será capaz de hacer coincidir el control con el procedimiento. 

         Cuando el nombre de un procedimiento no coincide con el nombre de un control, se convierte en un procedimiento general. 


Llamadas a Procedimientos.

          Un procedimiento Sub difiere de un procedimiento Function en que al procedimiento Sub no se le puede llamar mediante su nombre en una expresión. La llamada a un procedimiento Sub es una instrucción única. 

          Además, un procedimiento Sub no devuelve un valor en su nombre como hace una función. Sin embargo, al igual que Function, un procedimiento Sub puede modificar los valores de las variables que se le pasan.

Hay dos formas de llamar a un procedimiento Sub:

' Ambas instrucciones llaman a un Sub denominado MiProc.
Call MiProc (PrimerArgumento, SegundoArgumento)
MiProc PrimerArgumento, SegundoArgumento
 
          Observe que cuando utiliza la sintaxis Call, debe poner los argumentos entre paréntesis. Si omite la palabra clave Call, deberá también omitir los paréntesis alrededor de los argumentos
 


 
 
  Funciones
[Llamadas a Funciones] 

La sintaxis de un procedimiento Function es la siguiente:

[Private|Public][Static]Function nombre_procedimiento (argumentos) [As tipo]
 instrucciones
End Function
 
      Al igual que un procedimiento Sub, un procedimiento Function es un procedimiento diferente que puede tomar argumentos, realizar una serie de instrucciones y cambiar el valor de los argumentos. A diferencia de los procedimientos Sub, los procedimientos Function pueden devolver un valor al procedimiento que realiza la llamada. Hay tres diferencias entre los procedimientos Sub y Function:
 

  • Generalmente, se llama a una función incluyendo el nombre y los argumentos del procedimiento en la parte derecha de una instrucción o expresión mayor (valor_retorno = función()).
  • Los procedimientos Function tienen tipos de datos, al igual que las variables. Esto determina el tipo del valor de retorno. (En ausencia de la cláusula As, el tipo es el tipo predeterminado Variant.) 
  • Se devuelve un valor asignándole al propio nombre_procedimiento. Cuando el procedimiento Function devuelve un valor, se puede convertir en parte de una expresión mayor.


          Por ejemplo, podría escribir una función que calculara el tercer lado, o hipotenusa, de un triángulo rectángulo, dados los valores de los otros dos lados:

Function Hipotenusa (A As Integer, B As Integer) As String
 Hipotenusa = Sqr(A ^ 2 + B ^ 2)
End Function
 

Se llama a un procedimiento Function de la misma forma que a las funciones incorporadas en Visual Basic:

Label1.Caption = Hipotenusa(CInt(Text1.Text),CInt(Text2.Text))
strX = Hipotenusa(Width, Height)


Llamadas a Funciones.

          Normalmente se llama a un procedimiento de función que se ha escrito de la misma forma en que se llama a una función intrínseca de Visual Basic como Abs; es decir, utilizando su nombre en una expresión:

' Las instrucciones siguientes llamarían a una función 
' llamada ToDec.
Print 10 * Adec
X = Adec
If Adec = 10 Then Debug.Print "Fuera del intervalo"
X = OtraFunción(10 * Adec)
 
       También es posible llamar a una función igual que se llama a un procedimiento Sub. Las instrucciones siguientes llaman a la misma función:

Call Year(Now)
Year Now
 
Cuando llama a una función de esta manera, Visual Basic desecha el valor de retorno.
 


 
 
Pasaje de Argumentos a Procedimientos y Funciones
[Tipos de Datos]
[Argumentos Por Valor]
[Argumentos por Referencia]

          Normalmente el código de un procedimiento necesita cierta información sobre el estado del programa para realizar su trabajo. Esta información consiste en variables que se pasan al procedimiento cuando se le llama. Cuando se pasa una variable a un procedimiento, se llama argumento.

Tipos de datos de los argumentos

          Los argumentos de los procedimientos que escriba tienen el tipo de dato Variant de forma predeterminada. Sin embargo, puede declarar otros tipos de datos para los argumentos. Por ejemplo, la función siguiente acepta una cadena y un entero:

Function QuéComer (DíaSemana As String, Hora As Integer) As String
 ' Devuelve el menú del almuerzo basándose en el día y la hora.
 If DíaSemana = "Viernes" then
  QuéComer = "Pescado"
 Else
  QuéComer = "Pollo"
 End If
 If Hora > 4 Then QuéComer = "Demasiado tarde"
End Function
 


Paso de argumentos por valor

         Sólo se pasa una copia de la variable cuando se pasa un argumento por valor. Si el procedimiento cambia el valor, el cambio afecta sólo a la copia y no a la variable propiamente dicha. Utilice la palabra clave ByVal para indicar un argumento pasado por valor. 

Por ejemplo:

Sub Cuentas (ByVal intNumCuenta as Integer)
 .
 . ' Ponga aquí sus instrucciones.
 .
End Sub
 


Paso de argumentos por referencia

         Pasar argumentos por referencia le da al procedimiento acceso al contenido real de la variable en su ubicación de dirección de memoria. Como resultado, el procedimiento al que se ha pasado el valor de la variable se puede modificar de forma permanente. La forma predeterminada de pasar valores en Visual Basic es por referencia.

         Si especifica el tipo de dato de un argumento que se pasa por referencia, debe pasar un valor de ese tipo para el argumento. Puede eludirlo si pasa una expresión en vez de un tipo de dato como argumento. Visual Basic evalúa la expresión y la pasa como el tipo requerido si puede. 

        La forma más sencilla de convertir una variable en una expresión es ponerla entre paréntesis. Por ejemplo, para pasar una variable declarada como entero a un procedimiento que espera una cadena como argumento, debería hacer lo siguiente:

Sub ProcedimientoQueLlama ()
 Dim intX As Integer
 intX = 12 * 3
 Foo(intX)
End Sub

Sub Foo(Bar As String)
 MsgBox Bar 'El valor de Bar es la cadena "36".
End Sub
 


 
 
  Estructuras de Control (Repetición y Decisión)
[For Next]
[If...  End If]
[If...Then...Else...End If]
[Select Case - End Select]
[Do While - Loop / Do - Loop While]

Do While – Loop / Do – Loop While.

          Utilice el bucle Do para ejecutar un bloque de instrucciones un número indefinido de veces. Hay algunas variantes en la instrucción Do...Loop, pero cada una evalúa una condición numérica para determinar si continúa la ejecución. Como ocurre con If...Then, la condición debe ser un valor o una expresión que dé como resultado False (cero) o True (distinto de cero).

           En el ejemplo de Do...Loop siguiente, las instrucciones se ejecutan siempre y cuando condición sea True:

Do While condición
 instrucciones
Loop
 
          Cuando Visual Basic ejecuta este bucle Do, primero evalúa condición. Si condición es False (cero), se salta todas las instrucciones. Si es True (distinto de cero), Visual Basic ejecuta las instrucciones, vuelve a la instrucción Do While y prueba la condición de nuevo.

          Por tanto, el bucle se puede ejecutar cualquier número de veces, siempre y cuando condición sea distinta de cero o True. Nunca se ejecutan las instrucciones si condición es False inicialmente. Por ejemplo, este procedimiento cuenta las veces que se repite una cadena de destino dentro de otra cadena repitiendo el bucle tantas veces como se encuentre la cadena de destino:

Function ContarCadenas (cadenalarga, destino)
 Dim posición, contador
 posición = 1
 Do While InStr(posición, cadenalarga, destino)
  posición = InStr(posición, cadenalarga, destino) +1
  contador = contador + 1
 Loop
 ContarCadenas = contador
End Function
 
          Si la cadena de destino no está en la otra cadena, InStr devuelve 0 y no se ejecuta el bucle.

          Otra variante de la instrucción Do...Loop ejecuta las instrucciones primero y prueba condición después de cada ejecución. Esta variación garantiza al menos una ejecución de instrucciones:

Do
 instrucciones
Loop While condición

Hace el bucle cero o más veces Hace el bucle al menos una vez

Do Until condición
   instrucciones
Loop Do
 instrucciones
Loop Until condición
 


For – Next.

          Los bucles Do funcionan bien cuando no se sabe cuántas veces se necesitará ejecutar las instrucciones del bucle. Sin embargo, cuando se sabe que se van a ejecutar las instrucciones un número determinado de veces, es mejor elegir el bucle For…Next. A diferencia del bucle Do, el bucle For utiliza una variable llamada contador que incrementa o reduce su valor en cada repetición del bucle. La sintaxis es la siguiente:

For contador = iniciar To finalizar [Step incremento]
 instrucciones
Next [contador]
 
          Los argumentos contador, iniciar, finalizar e incremento son todos numéricos.

Nota   El argumento incremento puede ser positivo o negativo. Si incremento es positivo, iniciar debe ser menor o igual que finalizar o no se ejecutarán las instrucciones del bucle. Si incremento es negativo, iniciar debe ser mayor o igual que finalizar para que se ejecute el cuerpo del bucle. Si no se establece Step, el valor predeterminado de incremento es 1.
 
Al ejecutar el bucle For, Visual Basic:
 

  • Establece contador al mismo valor que iniciar.
  • Comprueba si contador es mayor que finalizar. Si lo es, Visual Basic sale del bucle. (Si incremento es negativo, Visual Basic comprueba si contador es menor que finalizar.)
  • Ejecuta instrucciones.
  • Incrementa contador en 1 o en instrucciones, si se especificó. 
  • Repite los pasos 2 a 4.


Este código imprime los nombres de todas las fuentes de pantalla disponibles:

Private Sub Form_Click ()
 Dim I As Integer
 For i = 0 To Screen.FontCount
  Print Screen.Fonts(i)
 Next
End Sub
 
          En la aplicación de ejemplo VCR,  (provisto por Visual Basic, en el Directorio Samples\PGuide\ VCR)  el procedimiento HighlightButton utiliza un bucle For...Next para pasar por la colección de controles del formulario VCR y mostrar el control Shape apropiado:

Sub HighlightButton(MyControl As Variant)
 Dim i As Integer
 For i = 0 To frmVCR.Controls.Count - 1
  If TypeOf frmVCR.Controls(i) Is Shape Then
   If frmVCR.Controls(i).Name = MyControl Then
    frmVCR.Controls(i).Visible = True
   Else
    frmVCR.Controls(i).Visible = False
   End If
  End If
 Next
End Sub


Else – End If.

          Use la estructura If...Then para ejecutar una o más instrucciones basadas en una condición. Puede utilizar la sintaxis de una línea o un bloque de varias líneas:

If condición Then instrucción 'vea que no hace falta cerrar con End If

If condición Then
 instrucciones
End If
 
          Condición normalmente es una comparación, pero puede ser cualquier expresión que dé como resultado un valor numérico. Visual Basic interpreta este valor como True o False; un valor numérico cero es False y se considera True cualquier valor numérico distinto de cero. Si condición es True, Visual Basic ejecuta todas las instrucciones que siguen a la palabra clave Then. Puede utilizar la sintaxis de una línea o de varias líneas para ejecutar una instrucción basada en una condición (estos dos ejemplos son equivalentes):

If cualquierFecha < Now Then cualquierFecha = Now

If cualquierFecha < Now Then
 cualquierFecha = Now
End If
 
          Observe que el formato de una única línea de If...Then no utiliza la instrucción End If. Si desea ejecutar más de una línea de código cuando condición sea True, debe utilizar la sintaxis de bloque de varias líneas If...Then...End If.

If cualquierFecha < Now Then
 cualquierFecha = Now
 Timer1.Enabled = False ' Desactiva el control Timer.
End If
 


If...Then...Else

           Utilice un bloque If...Then...Else para definir varios bloques de instrucciones, uno de los cuales se ejecutará:

If condición1 Then
 [bloque de instrucciones 1]
 [Else
 [bloque de instrucciones n]]
End If
 
        Visual Basic evalúa primero condición1. Si es False, Visual Basic ejecuta el bloque de instrucciones correspondientes a Else y después ejecuta el código que sigue a End If. 

       Por ejemplo, la aplicación podría realizar distintas acciones dependiendo del control en que se haya hecho clic de una matriz de controles de menú:

Private Sub mnuCut_Click (Index As Integer)
 If Index = 0 Then    ' Comando Cortar.
  CopyActiveControl   
  ClearActiveControl
 Else       ' Comando Pegar.
  PasteActiveControl
 End If
End Sub


Select - Case

          Visual Basic proporciona la estructura Select Case como alternativa a If...Then...Else para ejecutar selectivamente un bloque de instrucciones entre varios bloques de instrucciones. La instrucción Select Case ofrece posibilidades similares a la instrucción If...Then...Else, pero hace que el código sea más legible cuando hay varias opciones.

          La estructura Select Case funciona con una única expresión de prueba que se evalúa una vez solamente, al principio de la estructura. Visual Basic compara el resultado de esta expresión con los valores de cada Case de la estructura. Si hay una coincidencia, ejecuta el bloque de instrucciones asociado a ese Case:

Select Case expresión_prueba
 [Case lista_expresiones1
  [bloque de instrucciones 1]]
 [Case lista_expresiones2
  [bloque de instrucciones 2]]
  .
  .
  .
 [Case Else
  [bloque de instrucciones n]]
End Select
 
          Cada lista_expresiones es una lista de uno o más valores. Si hay más de un valor en una lista, se separan los valores con comas. Cada bloque de instrucciones contiene cero o más instrucciones. Si más de un Case coincide con la expresión de prueba, sólo se ejecutará el bloque de instrucciones asociado con la primera coincidencia. Visual Basic ejecuta las instrucciones de la cláusula (opcional) Case Else si ningún valor de la lista de expresiones coincide con la expresión de prueba.

          Por ejemplo, suponga que agrega otro comando al menú Edición en el ejemplo If...Then...Else. Podría agregar otra cláusula ElseIf o podría escribir la función con Select Case:

Private Sub mnuCut_Click (Index As Integer)
 Select Case Index
  Case 0     ' Comando Cortar.
   CopyActiveControl  ' Llama a procedimientos  generales.
   ClearActiveControl
  Case 1     ' Comando Copiar.
   CopyActiveControl
  Case 2     ' Comando Borrar.
   ClearActiveControl
  Case 3     ' Comando Pegar.
   PasteActiveControl
  Case Else
   frmFind.Show   ' Muestra el cuadro de diálogo  Buscar.
 End Select
End Sub
 
          Observe que la estructura Select Case evalúa una expresión cada vez al principio de la estructura.