lunes, 5 de agosto de 2013

clase 4

1 - Subrutinas de código

Se denomina subrutina a una porción de código que tiene como principal función ejecutar una determinada tarea. Estas tienen un nombre para poder identificarlas y luego poder llamarlas para poder utilizarlas.
Las subrutinas tienen un principio y un fin y estas pueden tener distinto tipo de alcance, o sea pueden ser de tipo privadas opúblicas.
En el siguiente ejemplo se muestra una subrutina que crea visual basic automáticamente cuando en un formulario insertamos un botón llamado Command1 y desde la ventana de eventos seleccionamos el evento click del mismo

Private Sub Command1_Click()

End Sub

Ahora, si colocamos por ejemplo un control TextBox llamado TextPedidos y hacemos doble click sobre el mismo, se crea el procedimiento por defecto para los TextBox, que es el evento Change

Private Sub TextPedidos_Change()

End Sub

En estos 2 últimos ejemplos tenemos una subrutina o procedimiento de tipo Privado, esto quiere decir que la podemos utilizar solo en el formulario o módulo donde está declarada o escrita
La palabra sub le sigue el nombre de la rutina que la identifica. En este caso Command1_click() y en el otro ejemplo TxtPedidos_Change().
Si quisiéramos que estos procedimientos se puedan llamar desde otro formulario, lo que tendríamos que hacer es cambiar el alcance del procedimiento, en ves de Private Sub cambiarlo por Public Sub. si hacemos esto, ese procedimiento de código puede ser utilizado desde cualquier parte del proyecto.

Subrutinas y Procedimientos propios


También podemos crear nuestros propios Procedimientos y Subrutinas de código para ejecutar una determinada tarea.
Para crear un procedimiento de código se debe escribir la palabra Private sub o Public sub (depende el alcance), seguida del nombre del procedimiento (un nombre que queramos) y los parámetros, si es que le enviaremos parámetros (los parámetros son opcionales). Además el procedimiento debe ser escrito en un lugar vacío de la ventana de código, es decir nno se puede crear un procedimiento dentro de otro
Un ejemplo para crear un procedimiento:
Private Sub ProcedimientoBorrar()

label1 = ""
label2 = ""
label3 = ""

End Sub

En este ejemplo creamos un procedimiento muy simple que tendrá la función específica de borrar el contenido de 3 controles label.
¿ Pero ahora te preguntarás como hago para que se ejecute el procedimiento que he creado ?.
Muy fácil. Solo debemos escribir el nombre del procedimiento en el lugar donde queremos que se ejecute. Por ejemplo supongamos que tenemos un formulario con 3 controles Label (Label1, Label2 y Label3), También un Commandbutton llamado Command1 y en la ventana de código hemos escrito el procedimiento del ejemplo anterior. Si nosotros queremos llamar al procedimiento, que borrará el contenido de los label cuando hagamos click en el Command1 lo haríamos así:

Private Sub command1_click()

ProcedimientoBorrar

End Sub

Al presionar el Command1 visual basic detectaría el nombre ProcedimientoBorrar, y automáticamente saltaría al lugar donde creamos el procedimiento y ejecutaría las líneas de código que haya en ese procedimiento.
También podemos llamar a un procedimiento utilizando la palabra Call, que quiere decir llamar, seguida del nombre del procedimiento, pero en este caso si utilizamos call y nuestro procedimiento contiene parámetros, debemos pasarlos entre paréntesis ( los parámetros de procedimientos y funciones se explican a continuación)
una vez que se ha terminado de ejecutar las instrucciones que estén dentro del bloque del procedimiento, volvería a la línea siguiente de donde fue llamado el mismo, y ejecutaría todas las líneas restantes de código. En este caso no ejecutaría nada mas por que no hemos puesto ninguna otra instrucción debajo de ProcedimientoBorrar.
La principal ventaja de crear procedimientos de código es que evita tener que escribir varias veces las mismas instrucciones en un programa, el código se hace mucho mas funcional y entendible, se pueden dividir un problema (una rutina), en varios procedimientos y probarlos independientemente, y además la posibilidad de enviar parámetros a los procedimientos


1.1 - Pasar parámetros a los procedimientos:

Se utilizan los parámetros en los procedimientos para que el procedimiento no ejecute siempre las mismas líneas de código y pueda variar, teniendo la posibilidad de hacerlo mas dinámicamente. En ciertas ocaciones no es necesario enviar parámetros, pero en otras es prácticamente fundamental. Los parámetros son datos, casi de cualquier tipo, que se pasan seguido del nombre del procedimiento, y si es mas de uno deben ir separados por comas (,). Ejemplo:

DatosPersonales "Luciano", 25, "La plata"

En este ejemplo pasamos tres parámetros: El primero es un nombre y es un dato de tipo String y por ende debe ir entre comillas. El segundo es un número y el tercero también un string. , o sea una cadena de caracteres
Pero la cosa no queda acá. Si nosotros vamos a pasar parámetros a un procedimiento, cuando creamos el procedimiento debemos establecer que tipo de parámetros va a recibir el mismo. Ejemplo:
Private Sub DatosPersonales(nombre As String, edad As Integer, ciudad As String)

Label1 = nombre
Label2 = edad
Label3 = ciudad

End Sub

siguiendo, el ejemplo anterior creamos un procedimiento con tres parámetros. Cada parámetro se declara como se hace con las variables, o sea que debemos darles un nombre a la variable y definir el tipo de dato ( sin utilizar la palabra Dim ) que recibirá cuando las llamemos.
Ahora podríamos por ejemplo, en el evento click de un Command1, llamar al procedimiento y pasarle los parámetros.
Coloca un Command1 , 3 controles Label, copia en la ventana de código el procedimiento anterior llamado DatosPersonales, y ahora pega el siguiente código
Private sub command1_click()

DatosPersonales "Luciano", 25, "La plata"

End sub

Al presionar el botón se llamará al procedimiento que habíamos creado anteriormente, y le pasará los valores de los parámetros en el orden en que estén establecidos declarados en el procedimiento. Esto quiere decir que el primer parámetro con el valor "Luciano" se almacenará o asignará a la variable nombre , el valor 25 se le asignará a la variable edad y el último valor a la variable ciudad.
Después que las variables ya cargaron el valor las podemos utilizar dentro del procedimiento, como en el ejemplo anterior que le asignamos a un control Label1 el contenido de la variable nombre, al Label2 el contenido de edad y al Label3 el contenido de la variable ciudad.
Es muy importante respetar el orden en que pasamos los parámetros en un procedimiento, por que por ejemplo en el caso anterior si hubiésemos pasado los parámetros de esta forma:

DatosPersonales 25, "Luciano", "La plata"

el segundo parámetro "Luciano" se almacenaría en la variable Edad que es de tipo Integer y se produciría un error en tiempo de ejecución por no coincidir los tipos de datos, ya que la variable espera un valor numérico de tipo Integer y nosotros le estamos pasando una cadena de caracteres, un dato de tipo String
Otra cosa importante es que cuando creamos, por ejemplo un procedimiento que va a recibir 2 parámetros, cuando lo llamemos, no podemos enviarle solo 1 parámetro, debemos obligatoriamente pasarle los 2 parámetros que hubiésemos declarado en el mismo. Un ejemplo que daría un error en tiempo de ejecución por no pasar adecuadamente los parámetros sería:

Private Sub sumar(a As Integer, b As Integer)

Label1 = a + b

End Sub
hasta aquí creamos un procedimiento llamado sumar que recibirá 2 parámetros de tipo Integer, si nosotros llamamos al procedimiento y le pasamos un solo valor, por ejemplo:
Call sumar ( 456 )

Esto daría un error de compilación por que el procedimiento espera recibir 2 parámetros ..y nosotros le estamos pasando o enviando solo uno de ellos.
Precisamente el cartel de error que te mostraría visual basic sería el siguiente:

vista del error en tiempo de compilación

Nota: hay una sentencia llamada Optional que SI permite pasar parámetros de forma opcional, por ejemplo:

 Private Sub Con_Parametro_Opcional(Nombre As String, _
                                   Optional Email As String)

MsgBox Nombre

MsgBox Email


End Sub

Ahora si llamas a la rutina anterior, y omites el parámetro Email, esta no dará error, por ejemplo:

Call Con_Parametro_Opcional("Maria")

Nota: Los parámetros opcionales, si o si deben estar declarados al final de la lista de parámetros, por ejemplo esto no se puede hacer:

Private sub una_Rutina ( Optional Email As String, Nombre as String )

Función IsMissing

Esta función se utiliza cuando utilizamos parámetros opcionales en una función o procedimiento, y nosotros, dentro del mismo queremos saber y averiguar si se han enviado los parámetros opcionales
El uso de IsMissing muy simple. Esta función retorna el valor True si NO se ha enviado el parámetro que queremos comprobar, y devuelve False si el parámetro ha sido enviado:
por ejemplo , colocar dos CommandButton

Private Sub Mostrar_Dato(Optional Nombre As Variant)
    
    ' Si IsMissing devuelve Verdadero, es por que no se envíó
    If IsMissing(Nombre) = True Then
        MsgBox " NO Se ha enviado el parámetro NOMBRE ", vbInformation
    Else
        MsgBox " Se ha enviado el parámetro NOMBRE ", vbInformation
    End If
    

End Sub

'Acá No se envía el parámetro
Private Sub Command1_Click()
    Mostrar_Dato
End Sub

'Acá Si se envía el parámetro

Private Sub Command2_Click()
    Mostrar_Dato "María"
End Sub



1.3 - Pasar parámetros por valor y por referencia ( ByVal y ByRef )

los parámetros en las funciones y procedimientos, se pueden enviar de dos maneras: por Valor y por Referencia.
Si están declarados como ByVal, los mismos serán por valor, si se declaran como ByRef serán por referencia.
La diferencia entre uno y otro método de paso de parámetros, es que en ByVal se envía una copia de la variable, y de esta manera si se efectúa un cambio en el procedimiento, solo tendrá efecto dentro del procedimiento o función, una ves que termine y finalice el mismo, la variable original pasará a valer el dato que tenía, es decir no se modifica
En los parámetros enviados por Referencia, lo que se hace es enviar un puntero de la variable original. Entonces, si en la función o procedimiento se cambia el valor de la variable, el cambio seguirá manteniéndose una ves que finalice la ejecución del procedimiento o función.

1.4 - Ejemplo de envío de parámetros por Valor ( ByVal )


Código de ejemplo
Private Sub Command1_Click()

Dim Un_Valor As Long

Un_Valor = 100


'Se envía la variable por Valor ( ByVal )

Call Sumar(Un_Valor)

'Muestra el valor que es 100, ( no se modificó en la función Sumar )
MsgBox Un_Valor


End Sub

Sub Sumar(ByVal Valor As Long)
'Modifica la variable
Valor = Valor + 100

End Sub

 

En el ejemplo anterior hay una Sub llamada Sumar que recibe como parámetro una variable enviada por valor con ByVal ( es decir es una copia de la variable original ). al presionar el Commmand1.
Al entrar en la Sub Sumar, el dato se modifica ( Valor = Valor + 100). Cuando finaliza el procedimiento Sumar y retorna a la línea siguiente de la llamada a la Sub sumar, muestra mediante un MsgBox el valor de la misma, en este caso es 100, y NO 200 que es el cambio que tuvo dentro del procedimiento Sumar ( Valor = Valor + 100 ).
Con esto queda visto que en realidad al enviarla como ByVal, se envía una copia de la variable original y cualquier cambio que se produzca, será solo en el ámbito del procedimiento o función

 

1.5 - Ejemplo de envío de parámetros por Referencia ( ByRef )

Este ejemplo es igual que el anterior, pero en la Sub sumar , la variable Valor se declara con ByRef ( por Referencia )
Código
Private Sub Command1_Click()

Dim Un_Valor As Long

Un_Valor = 100


'Se envía la variable por Referencia ( ByRef ) con el valor 100

Call Sumar(Un_Valor)

'Muestra el valor que ahora es 200, ( ya que se modificó en la Sub Sumar)
MsgBox Un_Valor


End Sub

Sub Sumar(ByRef Valor As Long)
'Modifica la variable
Valor = Valor + 100

End Sub

 

Al probar el código, ahora el Msgox al mostrar el valor de la variable, es de 200, y NO de 100 como en el ejemplo de ByVal.
Esto demuestra que al enviar la variable como referencia, si la misma se modifica dentro del procedimiento o función, se está modificando la variable REAL, es decir cualquier cambio que se le haga a la misma, se mantendrá, ya que se está modificando la variable Real ( no es una copia )
Nota Importante: cuando no se indica a un parámetro de una función o Rutina ni ByVal, ni ByRef, se asume que la misma se está enviando como referencia (ByRef).
Es decir lo siguiente recibe el parámetro como Referencia
Sub Sumar(Valor As Long)
.. que es lo mismo a esto:
Sub Sumar(ByRef Valor As Long)


2 - Las Funciones en visual basic


Las funciones son casi exactamente iguales que los procedimientos con respecto a la forma en que se los llama y se los crea o declara en el código, en como se le pasa los parámetros etc..
La diferencia fundamental con respecto a los procedimientos o subrutinas es que estos, luego de ejecutar el código que tengan en su interior, al final retornan un valor, y este valor luego lo podemos utilizar para una determinada tarea. En cambio los procedimientos, solo ejecutan el código que contienen y luego mueren por decirlo de alguna manera.

Para declarar o crear una función podríamos escribir lo siguiente:
Private Function Total(Valor1 As Integer, Valor2 As Integer) As Long

Total = Valor1 + Valor2

End Function

Seguramente notaste que declaramos la función llamada Total, y al final de los parámetros dice As Long , esto es por que como dijimos las funciones retornan o devuelven un valor, o sea que en este caso la función es de tipo Long, o mejor dicho devolverá un valor de tipo Long., y luego ese valor devuelto lo podemos utilizar en otra parte del programa.
Las Funciones pueden retornar casi cualquier tipo de datos, como números, cadenas, fechas, arreglos y vectores
Para llamar a la función anterior podríamos hacerlo de la siguiente manera:
Label1.caption = Total 502, 1478

En este caso el control Label1 llamaría a la función Total , la función realizaría la suma de los valores pasados como parámetros y por último el valor final de la suma se lo asignaría al control label1.
Nota : En el siguiente link , hay un ejemplo de una función que retorna un array de tipo string

3 - Ejercicios de ejemplo sobre procedimientos y funciones


Estos ejercicios y ejemplos tratan los temas vistos en esta sección, podés descargarlos en los enlaces de abajo. Los archivos en formato zip, contienen el código fuente y la descripción de los mismos en el mismo código fuente.

  1. Ejemplo que llama a una subrutina, desde otra subrutina
  2. Ejemplo en el que creamos un procedimiento sencillo para sumar valores
  3. Ejemplo que utiliza un procedimiento dentro de otro procedimiento
  4. Este ejercicio ejecuta un procedimiento dependiendo de una condición, utilizando una estructura de control if - then
  5. Este ejercicio utiliza un procedimiento que recibe parámetros numéricos y los multiplica
  6. Ejemplo de como utilizar un procedimiento que recibe un parámetro de tipo boolean
  7. Ejemplo que muestra como pasar parámetros de tipo string y algunas cosas mas
  8. Ejemplo que muestra una sencilla función que suma 2 variables y luego retorna el valor, mostrándolo en un control label
  9. Ejemplo de una función de tipo integer que recibe 2 parámetros
  10. Ejemplo de una función de tipo boolean que es ejecutada de acuerdo a una condición If.

Clase 3

1 - Introducción

Todos los lenguajes utilizan este sistema o metodología para la programación de aplicaciones, pero varían la forma en que se utilizan, su sintaxis etc...
Cuando uno recién empieza a programar, parece muy complicado entender estos temas, pero con la práctica todo se va aclarando.
Lo bueno de comprender los fundamentos de la programación, es que nos permite luego poder programar en casi cualquier lenguaje, por que la forma de programar en general no varía demasiado, lo que cambia en cada uno de ellos es su sintaxis y funciones y cosas propias del lenguaje. Aunque tampoco es tan así, ya que esto no significa que por que uno sea experto por ejemplo programando en lenguaje C, lo sea en Visual Basic y Viceversa.


2 - Las Variables


Las variables, como su nombre lo indica, se utilizan para almacenar valores que tienen la propiedad de variar el contenido. Cuando hablamos de contenido nos referimos a cualquier tipo de datos, por ejemplo un nombre, una fecha, un color, un número etc... .
A las variables se les asigna un nombre para poder utilizarlas. Por ejemplo puedo crear una variable llamada fecha y esta almacenará una fecha. A los nombres de las variables se los denomina identificadores. Cuando creamos variables, tenemos que tratar de asignarles un nombre que se relacione con el tipo de dato que queremos almacenar. Por ejemplo no tendría mucho sentido crear una variable llamada m y allí guardar o almacenar un nombre o un apellido, por que cuando echemos vista al código resultaría mas difícil deducir que tipo de dato estoy guardando. Por ejemplo en este último caso sería mucho mas lógico crear una variable llamada “nombres” y allí guardar "Luciano", "Pedro", "Natalia" etc..
En visual basic a las variables conviene declararlas, o sea, avisarle a vb que vamos a utilizar dichas variables. A estas se las declara en el comienzo del código y se les antepone la palabra reservada Dim, luego el nombre que nosotros queramos y seguido el tipo de dato que almacenará, por ejemplo si quiero almacenar en una variable llamada Numero
Dim numero As Integer

La palabra Integer le avisa a vsiaual basic que voy a guardar un número entero. Después de declararla le podemos asignar un valor con el operador "=", ejemplo:
Dim numero As Integer

numero = 1500
Pero hay que tener en cuenta que al declarar una variable, en este caso, de tipo integer, no podríamos almacenar en ella una cadena de caracteres como por ejemplo un nombre o cualquier otro tipo de datos que no sea un número entero. Si sucedería esto nuestro programa daría un error en tiempo de ejecución, mostrándonos un feo cartel diciéndoos que no coinciden los tipos de datos..


3 - Tipos de datos:

Los tipos de datos, indican el tipo de valor que puede almacenar una variable. Los principales tipos de datos:
Números enteros: dentro de los números enteros tenemos varios tipos de datos dependiendo el rango que queramos utilizar:
  • Byte: puede almacenar números enteros dentro del rango desde 0 a 255
  • Integer: puede almacenar números enteros dentro del rango -32.768 a 32.767
  • Long: puede almacenar números enteros dentro del rango -2.147.483.648 hasta 2.147.483.648 .
Números decimales: para almacenar números decimales contamos con los siguientes tipos de datos:
  • Single: almacena números decimales en el rango +/- 1e-45 hasta 3e38
  • Double: desde +/- 5e-324 hasta 1.8e308
Cadenas de caracteres: las cadenas de caracteres se definen con la palabra String y tienen un rango de hasta 2 billones de caracteres.
Tipos de valores lógicos: para almacenar tipos de valores lógicos como verdadero o falso, se utiliza la palabra Boolean y sus 2 posibles valores son True (verdadero) y False (falso).
Fechas y horas: Para almacenar fechas y horas se utiliza la palabra Date
Tipo variant : Las variables de este tipo pueden almacenar cualquier tipo de valor, pero ocupan mas memoria.
Nota: hay mas tipos de datos, incluso nosotros podemos crear los nuestros.


4 - Constantes:


Las constentes, como las variables, se utilizan para guardar datos y valores para nuestro programa, pero a diferencia de estas últimas (las variables), el contenido que almacenen no cambia, siempre es constante.

A diferencia de las variables que se declaran con la palabra Dimlas Constantes se declaran con la palabra Const.
Ejemplo:
Const numero = 53
En la línea anterior he creado una constante, que la llamé numero y va a almacenar un número , y este valor, cuando se ejecute mi programa se mantendrá invariable.

Un ejemplo:


1 - En la siguiente línea se declaran 2 tipos de variables de tipo Integer llamadas num1 y num2. Luego se les asigna un valor a cada una y luego las sumamos, y mediante la función MsgBox que es una función de Visual Basic para mostrar mensajes, mostramos el resultado de esa suma.
Coloca un botón (CommandButton) llamado Command1. Hacé dobleClick sobre el botón para que se abra la ventana de código de Visual Basic. Dentro del procedimiento Click pega este código:

Dim num1 As Integer
Dim num2 As Integer

num1 = 10
num2 = 20

'se mostrará un mensaje con la suma de las variables con el resultado 30
MsgBox num1 + num2

Al ejecutar el programa, podés ver como se presenta una caja de mensaje con el resultado al sumar las 2 variables num1 y num2
2 - Ahora vamos a declarar y crear 2 variables de tipo String, es decir vamos a almacenar cadenas de caracteres en cada una de ellas. En el ejemplo se crean 2 variables, una llamada nombre y otra apellido. Después le asignamos un valor, y por ultimo mostramos las variables con un mensaje usando la función MsgBox como en el ejemplo anterior. Pero antes hay que aclarar algo importante, las cadenas en visual basic se encierran entre comillas dobles como podés ver en el ejemplo, de lo contrario se va a producir un error.
Dim nombre As String
Dim apellido As String
'le establecemos valores
nombre = "Carlos"
apellido = "Peres"

'mostramos un mensaje con el valor de las variables
MsgBox nombre
MsgBox apellido

3 - Ahora un ejemplo que produce un error en tiempo de ejecución. Creamos 2 variables exactamente igual que en el ejemplo anterior, pero en ves de declarar las variables nombre y apellido como de tipo String lo hacemos como de tipo Integer.

Dim Nombre As Integer
Dim Apellido As Integer
'Le establecemos valores numericos
Nombre = "Carlos"
Apellido = "Peres"

Si probás el ejemplo, visual basic te mostrará un mensaje de error como el siguiente: "no coinciden los tipos de datos":

Vista de la ventana de error en tiempo de ejecución de visual basic

...ya que las variables están declaradas como de tipo Integer, y le estás asignando un tipo de dato que no lo acepta.
4 - Un ejemplo que almacena un número en una variable de tipo Byte (números de 0 a 255). Primero declaramos la variable y le damos un nombre, por ejemplo si queremos almacenar el número 88 hacemos por ejemplo así.
Dim Edad As Byte

Para asignarle un valor a esa variable:
Edad = 88

Para mostrar el valor de la variable Edad en un control TextBox cuando presionamos un botón Command1, sería de esta manera:
Private Sub Command1_Click()
'Declaramos la variable
Dim Edad As Byte

'Le asignamos un valor que no sea inferior a 0 ni mayor a 255
Edad = 88

'Lo mostramos en el control llamado Text1
Text1 = Edad
End Sub

Si probaras cambiando el valor 88 por ejemplo a 300, ocurriría lo mismo que en el ejemplo anterior, es decir un Error 13 en tiempo de ejecución "No coinciden los tipos de datos"


5 - Estructuras de control:

Las estructuras de control se utilizan para controlar el flujo del programa en una rutina o función. Mediante ellas podemos controlar, mediante una condición, que se ejecute una determinada línea o bloque de líneas de código .. o que no se ejecuten.

Estructura If - Then - Else
Esta estructura permite mediante una condición, que se ejecute o no se ejecute determinada tarea o línea de código.
Por ejemplo supongamos que tenemos en un formulario un control Label con la propiedad Caption con el valor 50
If Label1.Caption = "50" Then
msgbox "mi label tiene un valor de 50"
else
msgbox "mi label NO tiene un valor de 50"
end if

Esto traducido al español significaría lo siguiente:
Si (If) la propiedad caption del label1 que tengo en el formulario es igual (=) a "50" entonces (Then) que muestre un determinado mensaje, si no (Else) que muestre el otro mensaje.
En conclusión lo que hace esta estructura es evaluar una condición, si se cumple, que se ejecute determinada tarea. si no se cumple, se ejecutará las líneas de código que estén bajo la cláusula Else. Luego tenemos que cerrar la estructura con la palabraend if.
Tenemos que aclarar que no es obligatorio usar If y else juntos en la misma cláusula. Por ejemplo podríamos utilizar solo una estructura If sin else. Por ejemplo:
Private Sub Command1_Click()
'Si la propiedad caption del Label1 es "Hola" entonces se termina el programa
If Label1.Caption = "Hola" Then

  
   End

End If

'Si no, se prosigue con esta línea

MsgBox "No se ejecutó el bloque If Anterior porque el Caption del control Label1 no era Hola"

End Sub

Coloca un Label1 y un Command1. En la propiedad caption del Label1 escribe "Hola". Al ejecutar el programa y presionar el Command1, se termina el programa con la sentencia End de Visual Basic (End sirve para finalizar completamente la ejecución de nuestro programa). En cambio si ahora le cambia el caption al Label1 y volvés a ejecutar el proyecto, podés ver que la instrucción End no se ejecuta, si no que la pasa por alto y sigue con las restantes líneas, en este caso ejecuta la función MsgBox con el mensaje.

Estructura While - Wend
Esta estructura de control repetirá sin detenerse un determinado código mientras se cumpla una condición.
Por ejemplo supongamos que tenemos una variable llamada x que tiene un valor de 100.
while x = 100
...se ejecutan todas las líneas de código que estén aquí
wend

Esto traducido al español significaría lo siguiente:
Mientras (While) la variable x sea igual a 100, y no cambie su valor, se formará un bucle interminable, hasta que x cambie a cualquier otro valor disto de 100. Si x cambia el valor, por ejemplo a 234 saldría del bucle While - wend y seguiría ejecutando el resto del código, si es que hay mas código o instrucciones a ejecutar.
Un ejemplo, agrega un Command1 al formulario y un control Text1. Cuando ejecutemos el ejemplo, se deberá escribir un número dentro del control textBox. Entonces se creará un bucle While, que mostrará en el Caption del formulario, es decir en la barra de título, el intervalo desde 0 hasta el número que hayamos ingresado en el Text1. Es decir si ingresamos el número 9000, en el caption del formulario se imprimirán los número desde 0 hasta 9000.
Para hacer esto, dentro del bucle While pondremos una variable llamada Contador, que en cada pasada se incrementará en 1, pero cuando la variable Contador sea igual al número que haya en el Text1, se finalizará el bucle y se mostrará un mensaje que finalizó el mismo
Private Sub Command1_Click()
Dim contador  As Integer 'Declaramos la variable

While contador <> Text1

'Mostramos en el formulario el valor de la variable contador
Me.Caption = contador

'Incrementamos la variable en 1
contador = contador + 1

Wend

MsgBox "Terminó el bucle"

End Sub

Estructura For - next
La estructura es utilizada para generar una repetición de instrucciones o bucle, pero no evalúa una condición como en el caso del bucle While, si no que lo hace entre un número inicial y un número final que le debemos indicar al mismo.
Por ejemplo, tenemos un formulario con un Label1 y declaramos una variable de tipo integer llamada "contador" como en el caso anterior
Private Sub Command1_Click()
Dim contador As Integer

For contador = 0 To 1000

    Label1.Caption = contador

Next contador

End Sub

Esto traducido significaría lo siguiente:
Primero, tenemos una variable llamada "contador". Mediante el bucle For - next podemos controlar la cantidad de veces que queremos repetir un determinado proceso o instrucción. Esta posee un principio y un fin, en este caso el principio sería 0 y el fin 1000, de manera que la variable contador se incrementará en 1 hasta que llegue a 1000, y repetirá 1000 veces todas las instrucciones que estén bajo la cláusula For-next. En este caso nuestro control Label1 mostraría el contenido de la variable contador
Para ver en forma detallada y paso a paso esto, pongamos un ejemplo que lo que hace es repetir 10 veces (desde el 1 hasta el 10 en el intervalo del bucle For) y mostrará un mensaje con el valor de la variable Contador. Una ves que llegue a 10, terminará.
Colocá un Command1. Doble Click en el botón para escribir dentro del procedimiento que se ejecutará cuando lo presionemos. El código:
Dim contador As Integer

For contador = 1 To 10

    MsgBox "La variable Contador vale: " & contador

Next contador

MsgBox "Fin del bucle For"

Estructura Select case
La estructura Select Case se suele utilizar para evitar el uso de muchas cláusulas If y de esta manera no tener que anidarlas. La claúsula Select evalúa una condición y las cláusulas case contienen valores, si el valor que contiene la cláusula case es igual a la condición que se evaluó, ejecutará las instrucciones en dicha cláusula.
Dim Nombre As String

Nombre = Text1

Select Case Nombre

  Case "Jorge"

       MsgBox "Se ejecutó la cláusula case: " & Nombre
  Case "Pedro"

       MsgBox "Se ejecutó la cláusula case: " & Nombre

  Case "Carolina"

       MsgBox "Se ejecutó la cláusula case: " & Nombre

End Select

Esta estructura es muy práctica. En el ejemplo anterior, la cláusula Select case contiene como condición el valor de la variable llamada Nombre. Esa Variable toma el valor que tenga un control Text1, entonces buscará en todas las cláusulas case, y si encuentra una igual a la condición, ejecutará solo las instrucciones de la cláusula case que tenga el mismo valor, por ejemplo si ingresara el nombre "Martín" no se ejecutará ninguna cláusula Case. En cambio si ingreso "Jorge" se ejecutará solo las instrucciones que estén en la sección Case "Jorge" y asi...
En el caso anterior solo hemos colocado un valor para cada Case. Si quisieramos colocar mas valores podríamos hacerlo de esta forma:
Private Sub Form_Load()

Dim x As Integer

x = 10 'Le ponemos un valor a x

Select Case x

Case 5, 10
MsgBox "Se ejecutó el case que tiene el 5 y el 10"
'Se ejecuta esta sección

Case 15, 20
'Esto no se ejecuta
Case 25, 30
'Esto tampoco
End Select

End Sub

es decir que podemos listar los valores en los Case separados por comas. En el caso anterior se ejecutará el case 5, 10 ya que la variable x vale 10


6 - Operadores de Visual basic

Los operadores nos permiten operar, validar, comparar, asignar, distinguir, etc.., los datos e instrucciones de código de nuestros programas. A continuación los operadores mas importantes.

Operadores aritméticos
Estos operadores nos permiten trabajar con cálculos matemáticos como la suma (+), resta (-), división (/) y multiplicación (*).
Ejemplos:

a = 5
b = 15
c = a + b ' en este caso la variable c contendría el valor 20
ganancia = 500
perdida = 200
total = ganancia - perdida 'la variable total pasaría a valer 300
x = 100
y = 20

z = x / y ' La Variable z vale 5

x = 100
y = 20

z = x * y ' La Variable z vale 2000


Operadores lógicos
Se utilizan en expresiones para devolver resultados del tipo True o False, es decir Verdadero o falso. Los mas comunes son el operador And y el operador Or
Ejemplos:

If (x = 10) And (nombre = "maría") Then

'solo se ejecutará el código dentro de este bloque IF si la variable
'x vale 10 y la variable nombre es igual a maría

End If
If (m = 10) Or (nombre = "pedro") Then

'el código se ejecutará si por lo menos una variable es correcta
'es decir si por lo menos se cumple una condición

End If

Operadores de comparación
Los operadores de comparación se utilizan para comparar expresiones de cualquier tipo. Los mas importantes son: El operador de igualdad (=), menor que (<), mayor que (>), distinto a(<>)
Ejemplos:

If label1.Caption = "06/08/1978" Then

'si el control label1 en su caption contiene esa fecha
'se ejecutará el código que este aquí

End If
if x > 6 then
'si la variable x es mayor que 6 se ejecutará el código que este aquí
end if
If país <> "Estados unidos" Then
'si la variable país es distinta a "Estados unidos" se ejecutará el código
End If
While c <= 87

'mientras la variable c sea menor o igual a 87 se ejecutará
'el bucle While

Wend

Por último quedaría por ver el operador de concatenación (&) que se utiliza para unir cadenas de caracteres.
Por ejemplo:
nombre = "Jose"
apellido = "Peralta"

nombrecompleto = nombre & apellido

'La variable nombrecompleto pasaría a contener la unión de las otras dos variables
'es decir Jose Peralta

Nota: hay muchos mas operadores en Visual Basic, estos son los básicos