Visual Basic

48
VISUAL BASIC VARIABLES Y TIPOS DE DATOS 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, porque 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 más difícil deducir que tipo de dato estoy guardando. Por ejemplo en este último caso sería mucho más 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 1

Transcript of Visual Basic

Page 1: Visual Basic

VISUAL BASIC

VARIABLES Y TIPOS DE DATOS

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, porque 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 más difícil deducir que tipo de dato estoy guardando. Por ejemplo en este último caso sería mucho más 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 visual 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.

1

Page 2: Visual Basic

 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 más memoria.

Nota: hay mas tipos de datos, incluso nosotros podemos crear los nuestros.

 4 - Constantes:

Las constantes, 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 Dim, las 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.

2

Page 3: Visual Basic

 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 IntegerDim num2 As Integer

num1 = 10num2 = 20

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

 Al ejecutar el programa, se puede 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 StringDim apellido As String'le establecemos valoresnombre = "Carlos"apellido = "Peres"

'mostramos un mensaje con el valor de las variablesMsgBox nombreMsgBox 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 vez de declarar las variables nombre y apellido como de tipo String lo hacemos como de tipo Integer.

 Dim Nombre As IntegerDim Apellido As Integer'Le establecemos valores numéricosNombre = "Carlos"Apellido = "Peres"

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

3

Page 4: 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 variableDim Edad As Byte

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

'Lo mostramos en el control llamado Text1Text1 = EdadEnd 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.

4

Page 5: Visual Basic

Por ejemplo supongamos que tenemos en un formulario un control Label con la propiedad Caption con el valor 50

If Label1.Caption = "50" Thenmsgbox "mi label tiene un valor de 50"elsemsgbox "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 palabra end 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 programaIf 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

5

Page 6: Visual Basic

 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 contadorMe.Caption = contador

'Incrementamos la variable en 1contador = contador + 1Wend

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

6

Page 7: Visual Basic

 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

7

Page 8: Visual Basic

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, 10MsgBox "Se ejecutó el case que tiene el 5 y el 10"'Se ejecuta esta sección

Case 15, 20'Esto no se ejecutaCase 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 más 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 = 5b = 15c = a + b ' en este caso la variable c contendría el valor 20

ganancia = 500perdida = 200total = ganancia - perdida 'la variable total pasaría a valer 300

x = 100y = 20

8

Page 9: Visual Basic

z = x / y ' La Variable z vale 5

x = 100y = 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 más 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 más 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ódigoEnd If

9

Page 10: Visual Basic

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 más operadores en Visual Basic, estos son los básicos.

SUBRUTINAS DE CÓDIGO, PROCEDIMIENTOS Y FUNCIONES EN VB

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 o pú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

10

Page 11: Visual Basic

 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 vez 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 no 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

11

Page 12: Visual Basic

 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 más 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 más 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 más dinámicamente. En ciertas ocasiones 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 más 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 qué tipo de parámetros va a recibir el mismo. Ejemplo:

Private Sub DatosPersonales(nombre As String, edad As Integer, ciudad As String)

Label1 = nombreLabel2 = edadLabel3 = ciudad

End Sub

Siguiendo, el ejemplo anterior creamos un procedimiento con tres parámetros. Cada parámetro se

12

Page 13: Visual Basic

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, porque 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 )

13

Page 14: Visual Basic

 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:

 

 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 envió If IsMissing(Nombre) = True Then

14

Page 15: Visual Basic

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ámetroPrivate Sub Command1_Click() Mostrar_DatoEnd 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 vez 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 vez 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

15

Page 16: Visual Basic

End Sub

Sub Sumar(ByVal Valor As Long)'Modifica la variableValor = Valor + 100End 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 variableValor = 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.

16

Page 17: Visual Basic

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 cómo 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

17

Page 18: Visual Basic

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.

Ej1: Ejemplo que llama a una subrutina, desde otra subrutina

Begin VB.Form Form1 Caption = "EJERCICIO CON SUBRUTINAS DE CÓDIGO." ClientHeight = 3240 ClientLeft = 60 ClientTop = 345 ClientWidth = 6060 LinkTopic = "Form1" ScaleHeight = 3240 ScaleWidth = 6060 StartUpPosition = 2 'CenterScreen Begin VB.CommandButton Command2 Caption = "Command2" Enabled = 0 'False Height = 375 Left = 3960 TabIndex = 2 Top = 2640 Width = 1695 End Begin VB.CommandButton Command1 Caption = "Command1" Height = 375 Left = 360 TabIndex = 1 Top = 2640 Width = 1695 End Begin VB.Line Line1 BorderWidth = 3 X1 = 240 X2 = 5880 Y1 = 2400 Y2 = 2400 End Begin VB.Label Label1 Caption = $"Form1.frx":0000 Height = 1935 Left = 240 TabIndex = 0 Top = 240 Width = 5655 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = True

18

Page 19: Visual Basic

Attribute VB_Exposed = False

' Como podemos ver claramente, tenemos 2 Subrutinas de código. Una para el evento Click del Command1 y otra para el Command2. .Observa que las instrucciones para mostrar el mensaje con la función msgbox está escrita en el Command2. Nosotros lo que vamos a hacer es que cuando presione mos el Command1, salte a ejecutar, o mejor dicho, llame a la subrutina del Command2. Para hacer esto es muy simple, solo debemos escribir el nombre de la subrutina que queremos llamar, y Visual Basic saltará a dicha Rutina. Como podrá comprobar presionando cualquiera de los botones te mostraría el mensaje escrito en la rutina del Command2. Esto lo podemos hacer con cualquier rutina

'NOTA: Para activar el segundo Formulario cuando eje cutas el programa con F5, debes activarlo desde la Barra de menú opción Proyecto>Propiedades de proyecto y en la opción Objeto inicial que te muestra un combo desplegable, elige Form2.

'Command1Private Sub Command1_Click()Command2_ClickEnd Sub

'Command2Private Sub Command2_Click()MsgBox "Presione el Command1 y se ejecutaron las instrucciones del Command2", , "Ejercicio de ejemplo"End Sub

Ej2: Ejemplo que llama a una subrutina, desde otra subrutina

VERSION 5.00Begin VB.Form Form2 Caption = "Ejemplo 2" ClientHeight = 2580 ClientLeft = 60 ClientTop = 345 ClientWidth = 5175 LinkTopic = "Form2" ScaleHeight = 2580 ScaleWidth = 5175 StartUpPosition = 3 'Windows Default Begin VB.CommandButton Command1 Caption = "Command1" Height = 735 Left = 600 TabIndex = 1 Top = 480 Width = 1575 End Begin VB.FileListBox File1 Height = 1650 Left = 2760 TabIndex = 0 Top = 480 Width = 1935 EndEnd

19

Page 20: Visual Basic

Attribute VB_Name = "Form2"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalsePrivate Sub Command1_Click()File1_Click ' llama a la rutina File1_ClickEnd SubPrivate Sub File1_Click()File1.BackColor = vbBlue 'Cambié el color de fondo del controlForm2.BackColor = vbBlack 'Cambié el color de fondo del FormCommand1.Caption = "Llamé a la subrutina File1_Click" ' Cambié la propiedad Caption del BotónEnd Sub

Ej3: Ejemplo en el que creamos un procedimiento sencillo para sumar valores

VERSION 5.00

Begin VB.Form Form1 Caption = "EJERCICIO CON SUBRUTINAS DE CÓDIGO." ClientHeight = 3240 ClientLeft = 60 ClientTop = 345 ClientWidth = 6060 LinkTopic = "Form1" ScaleHeight = 3240 ScaleWidth = 6060 StartUpPosition = 2 'CenterScreen Begin VB.CommandButton Command2 Caption = "Command2" Enabled = 0 'False Height = 375 Left = 3960 TabIndex = 2 Top = 2640 Width = 1695 End Begin VB.CommandButton Command1 Caption = "Command1" Height = 375 Left = 360 TabIndex = 1 Top = 2640 Width = 1695 End Begin VB.Line Line1 BorderWidth = 3 X1 = 240 X2 = 5880 Y1 = 2400 Y2 = 2400 End Begin VB.Label Label1 Caption = $"Form1.frx":0000 Height = 1935

20

Page 21: Visual Basic

Left = 240 TabIndex = 0 Top = 240 Width = 5655 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False' Como podemos ver claramente, tenemos 2 Subrutinas de código. Una para el evento Click del Command1 y otra para el Command2. .Observa que las instrucciones para mostrar el mensaje con la función msgbox está escrita en el Command2. Nosotros lo que vamos a hacer es que cuando presionemos el Command1, salte a ejecutar, o mejor dicho, llame a la subrutina del Command2. Para hacer esto es muy simple, solo debemos escribir el nombre de la subrutina que queremos llamar, y Visual Basic saltará a dicha Rutina. Como podrá comprobar presionando cualquiera de los botones te mostraría el mensaje escrito en la rutina del Command2. Esto lo podemos hacer con cualquier rutina. Para que observes otro ejemplo, dirígete a la ventana de explorador de proyectos y verás otro formulario llamado Form2, allí tienes otro ejemplo para analizar. _

'NOTA: Para activar el segundo Formulario cuando eje cutas el programa con F5, debes activarlo desde la Barra de menú opción Proyecto>Propiedades de proyecto y en la opción Objeto inicial que te muestra un combo desplegable, elige Form2.

'Command1Private Sub Command1_Click()Command2_ClickEnd Sub

'Command2Private Sub Command2_Click()MsgBox "Presione el Command1 y se ejecutaron las instrucciones del Command2", , "Ejercicio de ejemplo"End Sub

Ej4: Ejemplo en el que creamos un procedimiento sencillo para sumar valores

VERSION 5.00Begin VB.Form Form2 Caption = "Ejemplo 2" ClientHeight = 2580 ClientLeft = 60 ClientTop = 345 ClientWidth = 5175 LinkTopic = "Form2" ScaleHeight = 2580 ScaleWidth = 5175 StartUpPosition = 3 'Windows Default Begin VB.CommandButton Command1 Caption = "Command1" Height = 735 Left = 600 TabIndex = 1

21

Page 22: Visual Basic

Top = 480 Width = 1575 End Begin VB.FileListBox File1 Height = 1650 Left = 2760 TabIndex = 0 Top = 480 Width = 1935 EndEndAttribute VB_Name = "Form2"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalsePrivate Sub Command1_Click()File1_Click ' llama a la rutina File1_ClickEnd Sub

Private Sub File1_Click()File1.BackColor = vbBlue 'Cambié el color de fondo del controlForm2.BackColor = vbBlack 'Cambié el color de fondo del FormCommand1.Caption = "Llamé a la subrutina File1_Click" ' Cambié la propiedad Caption del BotónEnd Sub

Ej5: Ejemplo que utiliza un procedimiento dentro de otro procedimiento

VERSION 5.00Begin VB.Form Form1 Caption = "Ejercicio utilizando un procedimiento sin parámetros" ClientHeight = 3750 ClientLeft = 60 ClientTop = 345 ClientWidth = 6360 LinkTopic = "Form1" ScaleHeight = 3750 ScaleWidth = 6360 StartUpPosition = 3 'Windows Default Begin VB.CommandButton Command1 Caption = "Llamar al procedimiento SumarTodo" Height = 855 Left = 4800 TabIndex = 9 Top = 2160 Width = 1215 End Begin VB.TextBox Text4 Height = 285 Left = 2760 TabIndex = 8 Top = 2880 Width = 1695 End Begin VB.TextBox Text3 Height = 285

22

Page 23: Visual Basic

Left = 2760 TabIndex = 7 Top = 2520 Width = 1695 End Begin VB.TextBox Text2 Height = 285 Left = 2760 TabIndex = 6 Top = 2160 Width = 1695 End Begin VB.TextBox Text1 Height = 285 Left = 2760 TabIndex = 5 Top = 1800 Width = 1695 End Begin VB.Label Label5 AutoSize = -1 'True Caption = "Ingrese un número entero:" BeginProperty Font Name = "Tahoma" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 240 TabIndex = 4 Top = 2880 Width = 2280 End Begin VB.Label Label4 AutoSize = -1 'True Caption = "Ingrese un número entero:" BeginProperty Font Name = "Tahoma" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 240 TabIndex = 3 Top = 2520 Width = 2280 End Begin VB.Label Label3

23

Page 24: Visual Basic

AutoSize = -1 'True Caption = "Ingrese un número entero:" BeginProperty Font Name = "Tahoma" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 240 TabIndex = 2 Top = 2160 Width = 2280 End Begin VB.Line Line1 X1 = 240 X2 = 6000 Y1 = 1680 Y2 = 1680 End Begin VB.Label Label2 AutoSize = -1 'True Caption = "Ingrese un número entero:" BeginProperty Font Name = "Tahoma" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 240 TabIndex = 1 Top = 1800 Width = 2280 End Begin VB.Label Label1 Caption = $"Form1.frx":0000 BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 1335 Left = 360 TabIndex = 0 Top = 240

24

Page 25: Visual Basic

Width = 5775 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False'Como primer paso creamos el procedimiento que sumará el contenido de las cajas de texto, y le pusimos el nombre SumarTodo.La línea On error resume next la pusimos por si ingresamos en los TextBox un valor que no sea numérico y de esta manera ignore el error. _Luego creamos una variable llamada Total, que almacenará la suma de los valores introducidos. La palabra Val que está delante de los Text, es una función de Visual Basic que sirve para transformar un String en un tipo de dato numérico. Esto lo hacemos, debido a que cuando ingresamos cualquier cosa en un TextBox, Visual Basic asume que estamos ingresando una cadena de caracteres esto quiere decir que no se da cuenta que estamos ingresando un número, entonces el trabajo de conversión de tipo de datos lo tenemos que hacer nosotros, ya que si no el resultado de la suma no sería la esperada. Para sacarte la duda quita la función Val, corre el programa, y observa los resultados.

'Luego que la variable Total ya almacenó el valor de la suma los mostramos mediante un mensaje con MsgBox, uniendo la cadena y la variable Total con el operador de concatenación "&"

' Por último, en el evento Click del Command1, colocamos el nombre de nuestro procedimiento y este lo llamará y ejecutará todas las instrucciones que tenga el mismo.

Private Sub SumarTodo()

On Error Resume Next

Dim Total As Long

Total = Val(Text1) + Val(Text2) + Val(Text3) + Val(Text4)

MsgBox "El resultado de la suma es: " & Total

End Sub

Private Sub Command1_Click()SumarTodoEnd Sub

Ej6: Este ejercicio ejecuta un procedimiento dependiendo de una condición, utilizando una estructura de control if – then

VERSION 5.00Begin VB.Form Form1 Caption = "Form1" ClientHeight = 2850 ClientLeft = 60 ClientTop = 345 ClientWidth = 5670 LinkTopic = "Form1" ScaleHeight = 2850 ScaleWidth = 5670

25

Page 26: Visual Basic

StartUpPosition = 3 'Windows Default Begin VB.ComboBox Combo1 Height = 315 ItemData = "Form1.frx":0000 Left = 240 List = "Form1.frx":000A TabIndex = 1 Text = "Ejecutar" Top = 2040 Width = 1935 End Begin VB.CommandButton Command1 Caption = "Aceptar" Height = 375 Left = 3840 TabIndex = 0 Top = 2040 Width = 1215 End Begin VB.Label Label2 Caption = $"Form1.frx":0025 Height = 1095 Left = 240 TabIndex = 3 Top = 240 Width = 5175 End Begin VB.Label Label1 AutoSize = -1 'True Caption = "Elige la opción si quieres o no, ejecutar el procedimiento" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = -1 'True Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00FF0000& Height = 195 Left = 240 TabIndex = 2 Top = 1560 Width = 4845 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False

‘Cuando presionemos el botón la estructura IF evaluará la condición. En este caso si el Combo1 dice Ejecutar podemos ver como llamamos al procedimiento "Miprocedimiento". En cambio si dice No ejecutar, solo mostraremos un mensaje.

26

Page 27: Visual Basic

Private Sub Command1_Click()

If Combo1.Text = "Ejecutar" Then Miprocedimiento ' Llamamos al procedimiento si la condición es verdaderaEnd If

If Combo1.Text = "No ejecutar" Then MsgBox "No llamamos al procedimiento"End IfEnd Sub

' Nuestro procedimiento

Private Sub Miprocedimiento()

MsgBox "Ejecutaste el procedimiento" ' Mostramos un mensaje

Label1.Visible = False 'Ocultamos el Label1Label2.Visible = False 'Ocultamos el Label2Command1.Visible = False 'Ocultamos el Command1Combo1.Visible = False 'Ocultamos el Combo1Form1.WindowState = vbMaximized ' Maximizamos nuestro FormularioForm1.Caption = "No es tan dificil este ejercicio ¿No?"End Sub

Ej7: Este ejercicio utiliza un procedimiento que recibe parámetros numéricos y los multiplica

VERSION 5.00Begin VB.Form Form1 Caption = "Procedimientos con parámetros" ClientHeight = 3315 ClientLeft = 60 ClientTop = 345 ClientWidth = 5070 LinkTopic = "Form1" ScaleHeight = 3315 ScaleWidth = 5070 StartUpPosition = 3 'Windows Default Begin VB.CommandButton Command1 Caption = "Pasar los parámetros al procedimiento y mostrar resultado" Height = 495 Left = 2280 TabIndex = 4 Top = 2040 Width = 2535 End Begin VB.ComboBox Combo2 Height = 315 Left = 840 TabIndex = 1 Text = "1" Top = 2760 Width = 1215 End

27

Page 28: Visual Basic

Begin VB.ComboBox Combo1 Height = 315 Left = 840 TabIndex = 0 Text = "1" Top = 2160 Width = 1215 End Begin VB.Label Label5 Caption = $"Form1.frx":0000 BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 1575 Left = 120 TabIndex = 7 Top = 120 Width = 4815 End Begin VB.Line Line1 BorderWidth = 2 X1 = 120 X2 = 4800 Y1 = 1800 Y2 = 1800 End Begin VB.Label Label4 AutoSize = -1 'True BackColor = &H00FF0000& BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H8000000E& Height = 195 Left = 3720 TabIndex = 6 Top = 2880 Width = 1275 End Begin VB.Label Label3 AutoSize = -1 'True Caption = "El resultado es:" BeginProperty Font Name = "MS Sans Serif"

28

Page 29: Visual Basic

Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 2280 TabIndex = 5 Top = 2880 Width = 1335 End Begin VB.Label Label2 AutoSize = -1 'True Caption = "Valor 2:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 120 TabIndex = 3 Top = 2760 Width = 675 End Begin VB.Label Label1 AutoSize = -1 'True Caption = "Valor 1:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 120 TabIndex = 2 Top = 2280 Width = 675 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False

29

Page 30: Visual Basic

' Primer paso creamos un procedimiento que va a recibir 2 parámetros de tipo numérico (Long: Entero Largo), y estos _parámetros serán los valores que seleccionemos en cada ComboBox. Esto quiere decir que la variable num1 almacenará en este caso el valor del combo1, y num2 la del combo2. Luego le asignamos al control Label4 la multiplicación de num1 y num2

Private Sub Multiplicar(num1 As Long, num2 As Long)

Label4 = num1 * num2

End Sub

'Aquí llamamos al procedimiento y le enviamos parámetros, en este caso el valor que hayamos seleccionado en los combo

Private Sub Command1_Click()Multiplicar Combo1.Text, Combo2.TextEnd Sub

Private Sub Form_Load()'Esta estructura For - Next lo que hace es cargar los combos con los valores del 1 al 1000, cuando cargamos el formulario. Para ello utilizamos una variable de tipo entero que la denominamos i, y le pusimos un valor de inicio y un valor final para el bucle. Luego por medio del método Additem que poseen los combos le pasamos como parámetro el valor que va teniendo la variable i en cada vuelta o ciclo.Dim i As IntegerFor i = 0 To 1000 Combo1.AddItem i Combo2.AddItem iNextEnd Sub

Ej8: Ejemplo de cómo utilizar un procedimiento que recibe un parámetro de tipo boolean

VERSION 5.00Begin VB.Form Form1 Caption = "Pasar parámetro de tipo Boolean" ClientHeight = 3195 ClientLeft = 60 ClientTop = 345 ClientWidth = 5610 LinkTopic = "Form1" ScaleHeight = 3195 ScaleWidth = 5610 StartUpPosition = 3 'Windows Default Begin VB.CommandButton Command1 Caption = "Llamar al procedimiento y evaluar la condición" Height = 375 Left = 240 TabIndex = 2 Top = 2640 Width = 3495 End Begin VB.ComboBox Combo1

30

Page 31: Visual Basic

Height = 315 ItemData = "Form1.frx":0000 Left = 240 List = "Form1.frx":000A TabIndex = 1 Text = "True" Top = 2040 Width = 1215 End Begin VB.PictureBox Picture1 Height = 975 Left = 4200 Picture = "Form1.frx":001B ScaleHeight = 915 ScaleWidth = 915 TabIndex = 0 Top = 2160 Width = 975 End Begin VB.Label Label2 Caption = $"Form1.frx":086D Height = 1335 Left = 240 TabIndex = 4 Top = 120 Width = 5295 End Begin VB.Label Label1 Caption = "Seleccionar True para mostrar la imágen o False para ocultarla" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 240 TabIndex = 3 Top = 1680 Width = 5415 End Begin VB.Line Line1 X1 = 120 X2 = 5640 Y1 = 1560 Y2 = 1560 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False

31

Page 32: Visual Basic

' Aquí creamos nuestro procedimiento que va a recibir como parámetro un valor Booleano. _

Private Sub MostrarImagen(ValorCombo1 As Boolean)If ValorCombo1 = True Then Picture1.Visible = TrueElse Picture1.Visible = FalseEnd IfEnd Sub' Aquí mandamos como parámetro el valor del comboPrivate Sub Command1_Click()MostrarImagen (Combo1.Text)End Sub

Ej 9: Ejemplo que muestra como pasar parámetros de tipo string y algunas cosas másVERSION 5.00Begin VB.Form Form1 Caption = "Pasar parámetro de tipo Boolean" ClientHeight = 3195 ClientLeft = 60 ClientTop = 345 ClientWidth = 5610 LinkTopic = "Form1" ScaleHeight = 3195 ScaleWidth = 5610 StartUpPosition = 3 'Windows Default Begin VB.CommandButton Command1 Caption = "Llamar al procedimiento y evaluar la condición" Height = 375 Left = 240 TabIndex = 2 Top = 2640 Width = 3495 End Begin VB.ComboBox Combo1 Height = 315 ItemData = "Form1.frx":0000 Left = 240 List = "Form1.frx":000A TabIndex = 1 Text = "True" Top = 2040 Width = 1215 End Begin VB.PictureBox Picture1 Height = 975 Left = 4200 Picture = "Form1.frx":001B ScaleHeight = 915 ScaleWidth = 915 TabIndex = 0 Top = 2160 Width = 975 End Begin VB.Label Label2

32

Page 33: Visual Basic

Caption = $"Form1.frx":086D Height = 1335 Left = 240 TabIndex = 4 Top = 120 Width = 5295 End Begin VB.Label Label1 Caption = "Seleccionar True para mostrar la imágen o False para ocultarla" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 240 TabIndex = 3 Top = 1680 Width = 5415 End Begin VB.Line Line1 X1 = 120 X2 = 5640 Y1 = 1560 Y2 = 1560 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False

' Aquí creamos nuestro procedimiento que va a recibir como parámetro un valor Booleano. _

Private Sub MostrarImagen(ValorCombo1 As Boolean)If ValorCombo1 = True Then Picture1.Visible = TrueElse Picture1.Visible = FalseEnd IfEnd Sub' Aquí mandamos como parámetro el valor del comboPrivate Sub Command1_Click()MostrarImagen (Combo1.Text)End Sub

Ej 10: Ejemplo que muestra una sencilla función que suma 2 variables y luego retorna el valor, mostrándolo en un control label

33

Page 34: Visual Basic

VERSION 5.00Begin VB.Form Form1 Caption = "Ejercicio con parámetros de procedimiento" ClientHeight = 4935 ClientLeft = 60 ClientTop = 345 ClientWidth = 4170 LinkTopic = "Form1" ScaleHeight = 4935 ScaleWidth = 4170 StartUpPosition = 3 'Windows Default Begin VB.CommandButton Command2 Caption = "Nuevo nombre" Height = 375 Left = 2760 TabIndex = 7 Top = 2040 Width = 1215 End Begin VB.CommandButton Command1 Caption = "Agregar nombre al control List" Height = 375 Left = 120 TabIndex = 3 Top = 2400 Width = 2415 End Begin VB.ListBox List1 Height = 1425 Left = 120 TabIndex = 1 Top = 2880 Width = 2415 End Begin VB.TextBox Text1 Height = 285 Left = 120 TabIndex = 0 Top = 2040 Width = 2415 End Begin VB.Label Label4 Caption = $"Form1.frx":0000 Height = 1335 Left = 120 TabIndex = 6 Top = 120 Width = 3975 End Begin VB.Label Label3 BackColor = &H00FF0000& Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 12 Charset = 0

34

Page 35: Visual Basic

Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00FFFFFF& Height = 300 Left = 3000 TabIndex = 5 Top = 4440 Width = 855 End Begin VB.Label Label2 AutoSize = -1 'True Caption = "Cantidad de nombres ingresados:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 120 TabIndex = 4 Top = 4560 Width = 2835 End Begin VB.Label Label1 Caption = "Ingresar nombres:" BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 120 TabIndex = 2 Top = 1680 Width = 2055 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False' Aquí enviamos como parámetro el contenido de Text1Private Sub Command1_Click()ProcedimientoAgregar Text1.Text

35

Page 36: Visual Basic

End Sub

' Aquí creamos nuestro procedimiento para agregar los nombres al control ListBox Como vemos la variable nombre va a almacenar el valor de Text1 y luego por medio del método AddItem del ListBox le pasamos como parámetro el valor que tenga la variable nombre. Para finalizar Colocamos un Control Label(Label3), que llevará la cuenta de los nombres ingresados. La forma en que el Label3 incrementa el valor es de la siguiente manera: Como podemos observar, en la propiedad Caption del Label3 le asignamos el 0. Cada vez que se ejecute el procedimiento para agregar nombres, el Label3 se asigna el mismo valor que tenía antes de ejecutarse + 1.

Private Sub ProcedimientoAgregar(nombre As String)Dim contador As IntegerList1.AddItem nombre

Label3 = Label3 + 1End Sub

Private Sub Command2_Click()'A esta altura del curso esta línea no merece comentariosText1.Text = ""End Sub

Ej 11: Ejemplo de una función de tipo integer que recibe 2 parámetros

VERSION 5.00Begin VB.Form Form1 Caption = "Ejercicio con funciones con parámetros" ClientHeight = 2385 ClientLeft = 60 ClientTop = 345 ClientWidth = 6675 LinkTopic = "Form1" ScaleHeight = 2385 ScaleWidth = 6675 StartUpPosition = 3 'Windows Default Begin VB.CommandButton Command1 Caption = "Ejecutar la función" Height = 375 Left = 2520 TabIndex = 0 Top = 1680 Width = 1695 End Begin VB.Label Label3 Caption = $"Form1.frx":0000 BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False

36

Page 37: Visual Basic

EndProperty Height = 1215 Left = 240 TabIndex = 1 Top = 240 Width = 6135 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False

' aquí creamos una función que recibirá 2 parámetros de tipo _integer. Luego dentro de la función creamos una variable Total _que almacenará la suma de las variables, y justo antes de termi _la función, le asignamos el valor que tenga Total a nuestra función.

Private Function sumar(a As Integer, b As Integer) As IntegerDim total As Integer

sumar = a + b

End Function'Luego podemos asignar directamente la función a un control, a una variable o cualquier otro objeto que se le pueda asignar el valor de la función. En este caso no debemos olvidar pasar correctamente los parámetros, es decir el orden correcto y el tipo de dato. Aquí el orden de los parámetros no modificaría el resultado final, ya que obviamente 22 + 42 es igual a 42 + 22 _Pero si pasáramos un tipo de dato incorrecto, como un String nuestro programa daría error.

Private Sub Command1_Click()Dim total As Integertotal = sumar(22, 42)MsgBox "El resultado es: " & totalEnd Sub

' Nota importante: Si habrás observado cuando creamos la función al final de esta le declaramos el tipo de dato que devolverá, en este caso "as integer" o sea un número entero. Hay que tener dado de no confundirnos con el tipo de dato que devolverá la función, por ejemplo en el caso anterior, si nosotros hubiésemos declarado a la función como Boolean(as Boolean), esta devolvería un dato de tipo Verdadero o falso, y nosotros se la estamos asignando a una variable de tipo Integer, en este caso la variable Total, y por ello nos daría un error en tiempo de ejecución.

Ej12: Ejemplo de una función de tipo boolean que es ejecutada de acuerdo a una condición If.

VERSION 5.00Begin VB.Form Form1 Caption = "Form1" ClientHeight = 3195 ClientLeft = 60 ClientTop = 345 ClientWidth = 4680

37

Page 38: Visual Basic

LinkTopic = "Form1" ScaleHeight = 3195 ScaleWidth = 4680 StartUpPosition = 3 'Windows Default Begin VB.TextBox Text1 Height = 285 Left = 120 TabIndex = 1 Text = "Text1" Top = 1800 Width = 4335 End Begin VB.CommandButton Command1 Caption = "Ejecutar la función" Height = 495 Left = 1200 TabIndex = 0 Top = 2280 Width = 2175 End Begin VB.Label Label1 Caption = $"Form1.frx":0000 BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 1455 Left = 120 TabIndex = 2 Top = 240 Width = 4335 EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False

'Aquí creamos la función MiFuncion que es de tipo Bollean o sea que va a devolver un dato de tipo verdadero o falso. Dentro de la función creamos una variable de tipo String y se la signamos al contenido que tenga la caja de texto. Luego, mediante una estructura IF, le asignamos el valor a la función. En este caso si la variable nombre es distinta "<>" a una cadena vacía la función devolverá un valor verdadero. En cambio si nombre no contiene nada la función retornará un valor False.

Private Function MiFuncion() As BooleanDim nombre As Stringnombre = Text1

38

Page 39: Visual Basic

If nombre <> "" Then MiFuncion = TrueElse MiFuncion = FalseEnd IfEnd Function

'Aquí, al ejecutar la función, la estructura If va a evaluar el valor que retorne la función, mostrando un determinado mensaje dependiendo del valor de retorno.

Private Sub Command1_Click()If MiFuncion = True Then MsgBox "El textBox contiene texto"Else MsgBox "El textBox está vacío"End IfEnd Sub

39