Академический Документы
Профессиональный Документы
Культура Документы
1 - Introducción
Bienvenido a la introducción de este tutorial básico de visual basic
Esta guía esta destinado para aquellos que nunca han entrado en contacto con este lenguaje
de programación. ( para que te des una idea se va a realizar en este capítulo algo parecido al
Hola mundo), si sos nuevo puede venirte como anillo al dedo, si no, te recomiendo que no
pierdas ni un segundo leyendo de gusto y cierres la ventana, jeje.
Este tutorial está basado en la versión 6.0 de visual basic, aunque con otras versiones no
creo que tengas problemas.
Entrando en el tema, con este lenguaje de programación podés realizar casi cualquier tipo
de programa para plataformas windows, esto quiere decir, que podés programar utilitarios
para windows, bases de datos, aplicaciones comerciales y de gestión, juegos, etc.. .
Sin embargo lo que no podés desarrollar son por ejemplo: aplicaciones que administren
bases de datos gigantes, drivers para dispositivos , juegos que utilicen una interfaz gráfica
compleja, ya que tendrías que utilizar otro entorno de desarrollo o lenguaje , como por
ejemplo el C, el C++, Delphi , .NET u otros, es decir lenguajes que sean mas rápidos y que
tengan soporte para este tipo de proyectos y programas.
Las aplicaciones que se puden desarrollar con visual basic 5 y 6 son aplicaciones de 32
bits solo para plataformas Windows.
Para inicializar el programa, luego de haberlo instalado obviamente, desde el menú inicio >
programas > microsoft visual basic 6.0, te podés crear un Acceso directo en tu escritorio
para tenerlo mas a mano.
En la imagen superior podés ver la barra de controles. Esta barra contiene los controles
estándar de Visual Basic. Se los llama estándar porque que son los controles que por
defecto añade Visual Basic cuando creamos un programa desde 0. A los controles no
estándar, u otro tipo de controles, por ejemplo los creados por nosotros, los que tengamos
instalados en el sistema, y demás que se instalan con el VB, hay que agregarlos a mano,
es decir uno mismo, esto se hace desde el Menú Componentes o presionando las
combinaciones de tecla Ctrl+T. Cuando se agrega un control no estándar, se añade a la
barra y ya lo podés utilizar..
Los controles estándar son los controles básicos, por ejemplo los Command Button o
botones de comando, Control TextBox o caja de texto, Picture Box o caja de imagen.
El control FileListBox para ver archivos, y varios otros que se explican en los siguientes
capítulos.
La imagen anterior, nos muestra los formularios (ventanas) , módulos de código, y otros
tipos de objeto que componen el proyecto que estamos realizando.
Desde esta ventana podemos hacer varias operaciones, por ejemplo al seleccionar un
formulario, en los botones "Ver Objeto" y "Ver código" en la parte superior, accedemos a
la vista de diseño del formulario, mientras que si elegimos Ver código, se abre una
ventana que muestra el código de ese formulario seleccionado.
También podemos desde esta ventana, Guardar el formulario, eliminarlo y varias otras
acciones.
Esta otra ventana acoplable que está debajo de la ventana de Proyecto, se llama Ventana
de propiedades de Visual Basic.
Desde la Ventana de Propiedades podemos modificar las características del objeto o control
seleccionado actualmente. Por ejemplo si agrego un formulario y lo selecciono, puedo
establecerle el color de fondo, el ancho, alto, el nombre que va a tener para poder
identificarlo y muchas otras propieades.
Lo importante que quede claro es que esta ventana cambia cada ves que seleccionamos un
objeto o control diferente, si seleccionamos un botón o Command Button, visualizará las
propiedades de ese botón, si seleccionamos un formulario las propiedades de ese
formulario, si seleccionamos un TextBox, mostrará ls propiedades de ese textBox , etc..
En esta parte se realizará un ejemplo simple que consistirá en una ventana o formulario
que contendrá un botón, y al presionar este botón nos mostrará o abrirá otra ventana con un
mensaje, como las que utiliza windows cuando nos informa sobre algo . Este mensaje
visualizará un texto con la descripción"Mi primer programa". Pero antes de realizar este
ejercicio veamos un par conceptos básicos necesarios
Formulario
Propiedades:
Cuando hablamos de propiedades nos estamos refiriendo a las características que puede
tener un control u objeto, por ejemplo: los botones llamados commandbutton tienen una
propiedad llamada caption. Esta propiedad establece el texto que va a mostrar el botón en
el propio botón.
Los formularios también poseen esta propiedad caption y muchos otros controles también
la poseen, pero no todos. Otro ejemplo de una propiedad puede ser el color de fondo de un
control, el ancho, el alto, el nombre que lleva para poder identificarlos, etc.. .
En resumen las propiedades, haciendo una comparación, serían como para las personas
tener 2 brazos, 2 piernas, el color del pelo, el color de los ojos, el nombre de la persona,
donde vive, su código postal, etc...
Los Eventos
Los controles y objetos poseen Eventos, pero no son todos iguales para todos los controles.
Ejemplos de eventos serian:
Para un botón: el evento click (cuando lo presionamos), para un formulario: load (este
evento se ejecuta cuando se carga el formulario en la memoria), para un textbox o caja de
texto: keypress (este evento se dispara cuando presionamos una tecla y el foco está puesto
dentro de la caja de texto).
Los Métodos
Los métodos de un objeto son funciones propias que tiene cada objeto. Por ejemplo los
formularios poseen un método llamado show , y lo que hace es cargarlo y hacerlo visible.
Para un control combobox este tiene un método llamado additem, y lo que hace es agregar
elementos en dicho control. Pero los métodos al igual que las propiedades y eventos, no
están presentes en todos los controles de manera igual, es decir algunos objetos y controles
pueden compartirlos, pero otros no. Por ejemplo el método Show de los formularios, no lo
posee ningún control estándar excepto los formularios.
4 - Como te darás cuenta, el texto que muestra el botón por defecto es "Command1".
Nosotros lo vamos a cambiar por "Mostrar mensaje". Para ello tenemos que cambiarle la
propiedad Caption del botòn. Entonces seleccioná con un click el command1 (serciorate
que esté seleccionado, cuando al rededor del botòn aparece unos puntos azules) y en la
ventana de propiedades de los controles que esta ubicada en la parte derecha del IDE, te
mostrará las propiedades del control que está seleccionado actualmente. En este caso como
está seleccionado el botón solo nos mostrarà las propiedades del Command1. Ahora buscá
en la lista de propiedades la propiedad Caption y verás que dice Command1, borrala y
escribe: "Mostrar mensaje". Como podés ver el texto o leyenda del botón a cambiado.
NOTA: Nosotros todavía no hemos ejecutado nuestro programa por que obviamente lo
estamos diseñando. A esto se lo denomina trabajar en "Tiempo de diseño". La otra forma
de trabajo se denomina "Tiempo de ejecución", que es cuando nuestro programa está
siendo ejecutado o cargado en memoria.
5 - Ahora vamos a agregar las instrucciones o líneas de código para que cuando pulsés el
botón se despliegue un mensaje. Hacé Doble click sobre el botòn y podés ver que se habre
una ventana donde escribir el código. Esta se llama precisamente ventana de Código. Al
abrirse la ventana muestra una serie de instrucciones
End Sub
Después se explica mas adelante que es eso de Private sub, End Sub, procedimientos,
funciones...etc
Por ahora lo que te tiene que quedar claro es que nosotros vamos a ingresar el còdigo
necesario para mostrar, por medio de una ventana, el mensaje "mi primer programa".
End Sub
6 - Acá lo que se hizo fue utilizar una función llamada MsgBox , que sirve para mostrar
mensajes. Ya podemos ejecutar o probar el ejemplo, para ello hay varias opciones y
formas:
En este momento nuestro programa está en ejecución, para volver a la pantalla de vista de
diseño y detener el programa , tenemos que presionar el ícono con un cuadrado azul (stop)
o ir al menú ejecutar y elegir la opciòn terminar.
Cada vez que inicias un programa nuevo Standar Exe Visual Basic Hace lo siguiente:
Crea un formulario llamado "Form1" y también un proyecto de trabajo llamado por defecto
"Proyecto1".
Cuando lo guardás, desde el menù Archivo > Guardar proyecto, se creará un archivo
llamado "proyecto1.vbp", otro archivo con los formularios que tengas en el proyecto, en
nuestro caso "Form1.frm" y otro archivo en este caso "Proyecto1.vbw" que es un archivo
de configuraciòn.
Este último archivo a nosotros no nos interesa, ya que lo usa Visual Basic para configurar
el proyecto cada vez que lo abrimos.
Para guardar proyectos, hay que ir al menú archivo y elegir guardar proyecto, también te
pedirá que guardes el formulario form1.frm . En ambos casos puedes asignarle el nombre
que quieras.
Como vimos en la página anterior, los formularios son las ventanas que contienen a otros
controles y en ellos podemos incluir controles de comando, como botones, cajas de texto,
controles para bases de datos, y por supuesto el código necesario de nuestros programas.
También se dijo, los controles e inclusive los Formularios tienen sus propias características,
como las propiedades (un ejemplo el color del fondo o propiedad Backcolor), sus
eventos (el evento load que se ejecuta cuando cargamos el formulario en memoria), y sus
métodos (por ejemplo el método show que es para mostrar el formulario y el método hide
que es para ocultarlo, en el caso de un formulario.
Acá hay que hacer una cosa muy importante. Cuando se comienza a programar, suele ser
muy casual confundir métodos y eventos y no son lo mismo. Los métodos son funciones
propias de cada objeto, por ejemplo el método hide de un formulario no lo posee un
command button. Con los eventos suele ocurrir lo mismo. Un formulario posee el evento
load y un command button no lo posee (a no ser que pertenezca un arreglo de controles
pero ese es otro tema que se verá en otra ocación).
Pero otros eventos si los comparten ambos. Siguiendo el ejemplo del formulario y el botón,
los dos tienen un evento llamado click, y todas las instrucciones de código que escribamos
en la rutina de código o procedimiento que estén bajo este evento, se ejecutarán cuando
hagamos un click con el mouse sobre el objeto. El evento Click lo poseen la mayoría de los
controles, pero no tiene porque ser así.
Para seguir con el tema de los métodos y eventos, vamos a hacer un ejemplo simple de
ejercicio. Este ejemplo, consistirá en un formulario que contendrá un botón y , al
presionarlo nos mostrará otro formulario.
1 - Comenzá un nuevo proyecto Exe. Por defecto visual basic te agrega un formulario
llamado Form1. este formulario contendrá el botón que al presionarlo muestre otro
formulario, en este caso un Form2.
Ahora selecciona el botón para que te muestre la lista de propiedades del mismo. Por si ya
te olvidaste, la ventana de propiedades está a la derecha y te muestra las propiedades del
objeto seleccionado actualmente en el entorno de trabajo del vb. Una ves seleccionado el
botón, buscá la propiedad caption y escribí : mostrar formulario 2
3 - Ahora hay que agregar el otro formulario es decir el Form2 a nuestro proyecto. Como en
la barra de controles no tienes la opción de agregar otros formularios, tendrás que agregarlo
desde la barra de menú >proyecto> Agregar formulario.
5 - Para ingresar el código al botón, hacé doble click en el mismo e ingresá la siguiente
instrucción de código: Form2.show.
Nota: Como seguro te diste cuenta, cuando escribís Form2 y presionas el punto ".", visual
basic te muestra una lista con todas las propiedades y métodos que tiene form2, y así
ocurre con todos los objetos que tienen propiedades y métodos. En este caso el método
show mostrará el Form2 en pantalla, es decir el método Show lo que hace es cargar en la
memoria un formulario y automáticamente lo hace visible.
6 - Corre el programa pulsando la tecla F5 para ver como funciona. Para terminarlo pulsa el
ícono con la imagen de un cuadrado azul desde la barra de herramientas.
En la primera parte, el programa que hicimos consistía en un formulario que tenía un botón
(Command1), y al presionarlo mostraba otro formulario . Este lo llevamos a cabo con el
método show que tienen los formularios y sirve para mostrarlos en pantalla.
El objetivo de este programa es mostrar cuatro métodos que poseen los formularios, ellos
son: Load, Unload, Hide y Show.
Pasos a seguir
1 - Crea un nuevo proyecto exe.
5 - Ahora vamos a escribir el código para los botones. Por si ya te olvidaste lo que íbamos a
hacer, lo que harán estos botones son:
El Command2 hace las 2 cosas al mismo tiempo, es decir lo carga y lo hace visible.
El Command4, mediante Hide lo oculta, aunque esté oculto sigue permaneciendo cargado.
En el Command1 entonces , hacé doble click en dicho botón y tipea: Load Form2 .
El Command4: Form2.hide .
6 - El último paso que nos queda para poder correr nuestro programa es ingresar un nuevo
formulario, entonces desde el menú proyecto eliges la opción agregar formulario y agregas
uno nuevo al proyecto.
Nota : seguro que te preguntarás para que sirve el método Load, si para que aparezca en
pantalla el Form2 tengo que usar la instrucciónshow. Supongamos que tenemos un
programa con varios formularios y que estos tienen muchos controles y es medio "pesado"
(me refiero en bytes), entonces a veces conviene cargar dichos formularios en la memoria,
para que cuando necesitamos llamarlos o mostrarlos en pantalla, estos se muestren de forma
mas rápida. Esta es una de las posibilidades del uso no es la única.
El código completo sería el siguiente:
Es fundamental escribir comentarios sobre los bloques de código que componen las
distintas partes del programa, para que cuando echemos una mirada al código sepamos de
que se trata. Estos comentario o líneas descriptivas no se ejecutan y no influye en nada a la
ejecución de los procedimientos, solo es información que ayuda a entender cada línea o
sección de un bloque de código.
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.
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
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:
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).
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 Dim, las Constantes se
declaran con la palabra Const.
Ejemplo:
Const numero = 53
Un ejemplo:
num1 = 10
num2 = 20
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.
Si probás el ejemplo, visual basic te mostrará un mensaje de error como el siguiente: "no
coinciden los tipos de datos":
...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í.
Edad = 88
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.
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
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:
End
End If
MsgBox "No se ejecutó el bloque If Anterior porque el Caption del control Label1 no era
Hola"
End Sub
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
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.
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
'Incrementamos la variable en 1
contador = contador + 1
Wend
End Sub
Estructura For - next
Por ejemplo, tenemos un formulario con un Label1 y declaramos una variable de tipo
integer llamada "contador" como en el caso anterior
Label1.Caption = contador
Next contador
End Sub
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:
For contador = 1 To 10
Next contador
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.
Nombre = Text1
Case "Jorge"
Case "Carolina"
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:
Dim x As Integer
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
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
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:
End If
End If
Operadores de comparación
Ejemplos:
End If
if x > 6 then
'si la variable x es mayor que 6 se ejecutará el código que este aquí
end if
While c <= 87
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"
'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
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
End Sub
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
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.
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:
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í:
ProcedimientoBorrar
End Sub
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
Label1 = nombre
Label2 = edad
Label3 = ciudad
End Sub
End sub
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.
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:
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:
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.
Nota: hay una sentencia llamada Optional que SI permite pasar parámetros de forma
opcional, por ejemplo:
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:
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:
End Sub
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
Código de ejemplo
Un_Valor = 100
Call Sumar(Un_Valor)
End Sub
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
Código
Un_Valor = 100
Call Sumar(Un_Valor)
End Sub
End Sub
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).
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..
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
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.
Ejemplo:
'Convertimos
cadena = LCase(cadena)
La función Ucase funciona de la misma manera que Lcase pero convierte el contenido de
una cadena a mayúsculas.
Por ejemplo, si tenemos un control Label1 que contiene un texto que dice: "Porcentaje de
sueldos", escribiendo la siguiente línea:
Label1 = UCase(Label1)
LTrim elimina los espacios vacíos de la parte izquierda de la cadena, RTrim de la parte
derecha y Trim de ambas partes.
Ejemplos:
Tenemos una variable llamada ciudad con el valor " Barcelona". Para eliminar los espacios
vacíos de la izquierda haríamos lo siguiente:
ciudad = LTrim(ciudad)
Si en un TextBox quisieramos borrar todos los espacios vacíos de la parte derecha de la
cadena:
MiText = RTrim(MiText)
La Función Trim elimina todos los espacios vacíos de ambos lados de la cadena. Ejemplo:
Ejemplo:
Como la función Len devuelve un número debemos asignar ese número devuelto en una
variable de tipo numérica.
Ejemplo:
TamanoCadena = Len(MiCadena)
Hay que tener en cuenta que la función Len también toma en cuenta los espacios vacíos.
1.4 - Función Asc y Chr
La función Asc nos permite obtener el código ASCII de un de terminado caracter.
Ejempos:
Si queremos obtener el código ASCII del caracter "a", que es el número 97 podríamos
hacer lo siguiente:
num = Asc("a")
En definitiva la función Asc lleva un solo parámetro de tipo String del cual queremos
obtener dicho número.
La Función Chr actúa a la inversa de la función Asc, esto quiere decir, que a partir de un
determinado número nos devolverá el caracter ASCII.
Ejemplo:
letra = Chr(97)
Como esta función devuelve un número debemos almacenarla en una variable de tipo
numérica para utilizarla.
Ejemplo:
Dim posicion As Integer
En este ejemplo la función encontró la cadena "mate" en la posición 15, o sea que la
variable posición pasa a valer 15.
Este ejemplo, muestra como buscar dentro de un control TextBox, el cual tiene dos
opciones, un botón para buscar la primera frase, y otro que sigue buscando a partir de
donde esté ubicda la selección.
Para armar el ejemplo colocar un Textbox llamado Text_Buscar que es donde se ingresará
la frase y otro TextBox llamado Text1 que tendrá el texto. Este ultimo con la propiedad
Multiline en True.
Option Explicit
Frase = txt_Buscar
If p > 0 Then
m_Pos = p
With Text1
.SelStart = m_Pos - 1
.SelLength = Len(Frase)
.SetFocus
End With
Else
MsgBox "No se encontró la frase", vbInformation
Text1.SetFocus
End If
End Sub
Call buscar_cadena(m_Pos + 1)
End Sub
Nota: también hay una función similar a Instr llamada InstrRev , y lo que hace es devolver
la posición de la primera concurrencia de una cadena dentro de otra cadena, pero
comenzando por el extremo derecho de la misma
La función Left:
Ejemplo:
Función Right:
Es igual que la función Left pero comienza a extraer caracteres desde el lado derecho de la
cadena.
La función Mid:
Tiene la misma función que las anteriores pero posee tres parámetros. Su sintaxis es:
Ejemplos:
Este Otro ejemplo usa la función Mid para realizar un simple efecto tipo máquina de
escribir.
Option Explicit
Sub Pausa(Segundos As Double)
End Sub
LenFrase = Len(Frase)
DoEvents
i = i + 1
' Obtiene el siguiente caracter
Caracter = Mid(Frase, i, 1)
' texto actual
texto = texto & Caracter
Destino.Print texto ' Imprimi e/ dibuja el texto
' pausa o delay
Pausa Segundos
DoEvents
Loop
End Sub
La función Val convierte una cadena en un número yla función Str un número en una
cadena.
Ejemplos:
cadena = "123456"
cadena = Val(cadena)
cadena2 = 123456
cadena2 = Str(cadena2)
Ejemplo:
Ejemplo :
Rnd (número)
Pero para poder generar dichos números aleatorios, debemos utilizar previamente la
función Randomize con la siguiente fórmula:
LimiteInferior = 20
LimiteSuperior = 40
Nota: en este enlace podés ver un ejemplo que permite generar números aleatorios no
repetidos
Funciones matemáticas
Las principales funciones matemáticas provistas por Visual Basic son:
• FormatCurrency: Esta función se utiliza para trabajar con números con formato en
dinero. Ejemplo:
si tenemos un número 3 y utilizamos la función nos devolvería "$3".
• FormatPercent: Esta función es utilizada para trabajar con porcentajes. Ejemplo :
si tendríamos un número 321, nos devolvería: "32,1%" .
• FormatDateTime: Esta función trabaja con fechas y horas.
• FormatNumber: Formatea expresiones números
Ejemplo
Este parámetro es de tipo opcional. al colocar la coma dentro de la función , visual basic
despliega la lista de constanetas mencionadas, como muestra el gráfico:
Un ejemplo para ver estos formatos utilizando FormatDateTime: Colocar cinco option
Button, cada botón de opción mostrará los diferentes formatos en el caption del formulario,
es decir en la barra de título.
Código en el formulario:
End Sub
Private Sub Option1_Click()
Me.Caption = FormatDateTime(Now, vbGeneralDate)
End Sub
FormatNumber - Ejemplos:
Numero = 0.489698
Numero = FormatNumber(Numero, 2, vbFalse)
MsgBox Numero
Numero = 1.958754
Numero = FormatNumber(Numero, 2)
MsgBox Numero
Función Format:
La función Format es mas completa que las anteriores funciones, porque puede manejar
mas tipos de datos, y no devuelve solo cadenas, esta también puede devolver números y
fechas.
Ejemplo:
Nota: Si ingresamos un número decimal, debemos utilizar el "." y no la coma "," ya que la
coma determina el comienzo de otro parámetro dentro de la función y Visual basic daría
error de sintaxis
Ejemplos de los principales Formatos con nombre para el manejo de Fechas y Horas:
DateAdd : Devuelve un Variant que contiene una fecha que indica el intervalo de tiempo
que se ha agregado
Ejemplos
El siguiente ejemplo utiliza la función DateDiff para mostrar el itervalo entre dos fechas. El
intervalo lo muestra en segundos , minutos, dias, semanas meses y años, como muestra el
siguiente gráfico
Option Explicit
Me.Cls
Me.Print "Calcular Intervalos entre las fechas " & Fecha_Inicial & _
" hasta :" & Fecha_Final & vbNewLine & String(150, "-") &
vbNewLine
End Sub
Me.AutoRedraw = True
Command1.Caption = "calcular intervalos "
End Sub
Nota: para restar, usar el signo negativo, como se usa en el último ejemplo.
Para poder restar y agregar segundos a una hora, usar en el parámetro intervalo la "S", para
minutos usar la "n", para horas la "h", para restar y sumar semanas la "ww"
En el siguiente enlace podés ver algunos otros ejemplos que trabajan con dichas funciones
Cadena = Time ' Devuelve la hora del sistema en este formato: "17:32:51"
Visual Basic posee 2 tipos de funciones para presentar mensajes, ellas son MsgBox e
InputBox.
Función InputBox:
La función InputBox presenta un mensaje al usuario, permitiéndole ingresar un valor en
una caja de texto:
Como se dijo la función InputBox presenta un cuadro de diálogo donde el usuario puede
ingresar un texto y luego aceptar o cancelar dicho cuadro de diálogo.
El aspecto mas importante de InputBox es que nos devuelve una cadena con lo que haya
ingresado el usuario en la caja de texto. Luego podemos realizar una tarea específica
dependiendo del valor devuelto.
Ejemplo:
Cuando el usuario presiona Candelar, el InputBox devuelve una cadena vacía. Esto es
importante tenerlo en cuenta para realizar una o tal acción
Si quiseramos por ejemplo desplegar un InputBox, y que este no se cierre hasta que el
usuario si o si haya ingresado un valor, podemos hacerlo de la siguiente forma, utilizando
una condición en un bucle Do Loop
'Muestra el valor
MsgBox Dato, vbInformation
End Sub
Enlace relacionado :
Función MsgBox:
La función MsgBox, que ya se vió varias veces en distintos ejemplos, es muy fácil de usar
y se utiliza para mostrar distintos tipos de mensajes.
Ejemplos de mensajes o cajas de texto con la función MsgBox que podemos mostrar:
Como se ve en los gráficos anteriores, con MsgBox podemos tener variedad a la hora de
mostrar un determinado mensaje, utilizando para ello las diferentes constantes que
incorpora la función.
Los parámetros mas importantes son:
1 - Arreglos y vectores
Los Arreglos se utilizan para almacenar un conjunto de variables, que sean del mismo tipo
de dato, y todas estas bajo un mismo nombre.
Por ejemplo imaginemos que tenemos 20 variables de tipo String que almacenan nombres
(nombre1, nombre2, etc..). si yo ahora quisiera pasar todas estas cadenas a minúsculas
tendría que utilizar la función Lcase con cada variable: nombre1 = Lcase(nombre1),
nombre2 = Lcase(nombre2), etc..
For x = 0 To 30
nombres(x) = LCase(nombres(x))
Next
Siguiendo el ejemplo anterior: en vez de escribir la sentencia Lcase 30 veces para cada
variable, hemos utilizado un arreglo llamado nombres con un número de índice 30 , es
decir que almacena 30 datos de tipo String
1.1 - Declaración de los arreglos en el código
Para crear un arreglo se debe en primer lugar declararlo como cualquier otra variable, la
única diferencia es que debemos indicar la cantidad de elementos que contendrá el arreglo,
colocando el número de índice entre paréntesis. Por ejemplo :
Como podemos ver en el primer ejemplo hemos declarado un arreglo llamado miArreglo y
entre paréntesis hemos declarado el rango de capacidad del mismo, es decir la cantidad de
datos que podrá contener
El primer número , el 1 , indica el límite inferior del mismo, y el número 15 indica el límite
máximo del arreglo, conformando de esta manera un arreglo que podrá almacenar 15 datos
de tipo string.
Importante: los arreglos se dividen en 2 grupos, los vectores y las matrices. Los vectores
son arreglos que contienen una sola dimensión y las matrices 2 o mas dimensiones.
alumnos(1) = "juan"
alumnos(2) = "micaela"
alumnos(3) = "maría"
alumnos(4) = "ignacio"
Primero declaramos un arreglo llamado alumnos, de tipo string y que contendrá 4
elementos. Luego le asignamos un valor de cadena como a cualquier otra variable de tipo
string, pero con la diferencia que para referirnos al elemento utilizamos el n° de índice del
mismo.
Otro ejemplo
Next x
Por ejemplo:
Option Explicit
nombre As String
apellido As String
cpostal As Integer
End Type
personas(1).nombre = "carlos"
personas(1).apellido = "Martínez"
personas(1).cpostal = 1900
personas(2).nombre = "Héctor"
personas(2).apellido = "rosales"
personas(2).cpostal = 1898
personas(3).nombre = "Albert"
personas(3).apellido = "Einstein"
personas(3).cpostal = 1324
End Sub
Para utilizar una estructura definida por nosotros en vectores o matrices, se hace de la
forma habitual, con la diferencia que debemos declarar el arreglo utilizando el tipo de dato
Type que hayamos creado, en este caso Dim personas(1 to 3) as agenda
2 - Las matrices
Como se dijo anteriormente, las matrices son arreglos de mas de 1 dimensión (2 o mas), a
diferencia de los vectores que poseen una sola dimensión.
Podemos imaginar una matriz bidimensional ( 2 dimensiones) , como una cuadrícula con
filas y columnas, donde las filas representarían las coordenadas x y las columnas las
coordenadas y.
Las matrices se declaran en el código de manera igual que los vectores, con la diferencia
que debemos indicar mas subíndices de acuerdo a la cantidad de dimensiones que
posea la matriz.
Si luego quisiera acceder a los datos de la misma basta con referirnos a los subíndices
Por ejemplo:
para acceder a los datos sería exactamente de la misma manera pero debemos utilizar un
índice mas.
Ejemplo:
cubo (1, 1 , 1) = 50
cubo (1, 1 , 2) = 50
cubo (1, 1 , 3) = 50
cubo (1, 2 , 1) = 50
cubo (1, 2 , 2) = 50
cubo (1, 2 , 3) = 50
cubo (1, 3 , 1) = 50
cubo (1, 3 , 2) = 50
cubo (1, 3 , 3) = 50
cubo (2, 1 , 1) = 50
cubo (2, 1 , 2) = 50
cubo (2, 1 , 3) = 50
cubo (2, 2 , 1) = 50
cubo (2, 2 , 2) = 50
cubo (2, 2 , 3) = 50
cubo (2, 3 , 1) = 50
cubo (2, 3 , 2) = 50
cubo (2, 3 , 3) = 50
cubo (3, 1 , 1) = 50
cubo (3, 1 , 2) = 50
cubo (3, 1 , 3) = 50
cubo (3, 2 , 1) = 50
cubo (3, 2 , 2) = 50
cubo (3, 2 , 3) = 50
cubo (3, 3 , 1) = 50
cubo (3, 3 , 2) = 50
cubo (3, 3 , 3) = 50
En el ejemplo anterior, que es un poco extenso, es para que veas todos los posibles valores
que puedes almacenar en una matriz de 3 x 3 x 3, y que da como resultado un arreglo de 27
valores posibles.
3 - Vectores dinámicos
Hasta ahora habíamos visto solo vectores o arreglos de tamaño fijo, ¿ pero qué pasa cuando
no sabemos el tamaño o el largo de un vector y queremos que sea variable ?.
Visual basic posee una sentencia o función que nos permite cambiar el largo de un vector
en tiempo de ejecución, dándonos así mas flexibilidad, y de esta manera no desperdiciar
memoria y recursos de la pc creando vectores mas largos de lo que realmente necesitamos.
Esta función se llama ReDim y ReDim Preserve , y un ejemplo de como aplicarla sería de
la siguiente manera:
alumnos(1) = "Luciano"
alumnos(2) = "Esteban"
alumnos(3) = "Mariano"
alumnos(4) = "Pedro"
Ahora para redimensionar el tamaño del vector por ejemplo a 7 elementos, utilizamos la
función ReDim Preserve, para preservar los 4 valores anteriores y le agregamos 3 valores
mas:
alumnos(5) = "Karina"
alumnos(6) = "Raúl"
alumnos(7) = "Romina"
Para eliminar un array, arreglo o vector, podemos utilizar Erase, por ejemplo:
Erase Nombre_Del_Vector
' Devuelve 1
LimiteInferior = LBound(UnVector)
' Devuelve 520
LimiteSuperior = UBound(UnVector)
' Devuelve 0
LimiteInferior = LBound(UnaMatriz, 1)
' Devuelve 20
LimiteSuperior = UBound(UnaMatriz, 1)
' Devuelve 5
LimiteInferior = LBound(UnaMatriz, 2)
' Devuelve 100
LimiteSuperior = UBound(UnaMatriz, 2)
' Devuelve 0
LimiteInferior = LBound(OtraMatriz, 1)
' Devuelve 10
LimiteSuperior = UBound(OtraMatriz, 1)
' Devuelve 0
LimiteInferior = LBound(OtraMatriz, 2)
' Devuelve 20
LimiteSuperior = UBound(OtraMatriz, 2)
' Devuelve 0
LimiteInferior = LBound(OtraMatriz, 3)
' Devuelve 30
LimiteSuperior = UBound(OtraMatriz, 3)
End Sub
Como habrás visto en los ejemplos anteriores, para conocer los limites superiores e
inferiores en los vectores, solo se debe pasar como parámetro a las funciones Lbound y
Ubound, el nombre del vector con el cual queremos trabajar.
En cambio en las matrices se añade un segundo parámetro en el cual debemos indicar el
número de la dimensión en la cual queremos recuperar los valores.
Si deseamos recorrer todos los elementos de un vector o una matriz podemos hacerlo
mediante un bucle For de la siguiente manera:
Visual basic en su sexta versión incorpora estas 3 funciones para trabajar solo con vectores.
Estas funciones están relacionadas con el tratamiento de las cadenas de caracteres.
Función Join
Esta función se utiliza para unir en una sola variable el conjunto de subcadenas de un
vector. Esta función tiene solo 2 parámetros y es muy fácil de usar. Ejemplo:
vector(1) = "Carlos"
vector(2) = "Pedro"
vector(3) = "Juan"
Función Split:
Split se utiliza para rellenar un vector dinámico que contiene un número de subcadenas a
partir de una cadena que le pasamos como parámetro a la función.
Vector(0) = "maría"
Vector(1) = "natalia"
Vector(2) = "Romina"
End Sub
Nota: una cosa importante es que en el vector anterior no se ha declarado un rango , ya que
la función devuelve un vector cuya cantidad de elementos se ignora, es decir no se
conoce.
Función Filter :
Ejemplo:
' Vector
Dim Alumnos(1 To 4) As String
Alumnos(1) = "Luciano"
Alumnos(2) = "Lucas"
Alumnos(3) = "juan"
Alumnos(4) = "Natalia"
Hasta acá se vió los aspectos de los vectores y matrices como estructuras que nos permiten
almacenar datos y resolver problemas lógicos en nuestros programas. Ahora veremos los
Arreglos de controles o vectores de controles
En un arreglo de controles todos los controles deben ser del mismo tipo y además no puede
haber un control dentro del arreglo que tenga el mismo número de índice, ya que sería
imposible identificarlo en el conjunto, además VB no lo permitiría y nos mostraría un error.
Las ventajas principales que tenemos cuando trabajamos con un vector de controles son
las siguientes:
Nota: cualquier control de visual basic que no tenga un arreglo creado, la propiedad index
de los mismos no tendrá ningún número o valor, ya que esta propiedad está reservada para
los controles que formen parte de un vector o arreglo.
Ejemplo:
Como te darás cuenta, si tuvieses que hacer esto manualmente, es decir deshabilitar cada
TextBox individualmente tendrías que escribir
text1.enabled = False
y así para cada uno de los controles. en cambio haciendo un arreglo de controles,
recorremos mediante un For todos los controles refiriendonos al índice y estableciéndole la
propiedad Enabled en False para deshabilitarlos.
Create un arreglo de 10 TextBox Para eso coloca un text1 en el formulario. después copialo
y pegalo, vb te va a preguntará si querés hacer un arreglo, decile que si, hasta que tengas 10
o los que quieras.
Dim i As Integer
For i = 0 To 9
text1(i).Enabled = False
Next
Como podés ver, le pasamos en el parámetro índice el valor de la variable i para referirnos
a ese text1 en particular y asignarle la propiedad Enabled en False
Por ejemplo supongamos que tenemos un programa que tiene muchos formularios. y varios
de esos formularios tienen una función que se encarga de limpiar todas los textBox y
eliminar el contenido de los mismos
Para solucionar esto, y no tener que repetir código, podríamos crear en un módulo de
código, una SubRutina para que la puedan utilizar y acceder desde todos los formularios.
Para poder pasar un vector como parámetro a una rutina, la variable o argumento en la
Subrutina, debe estar declarada como de tipo Object
Ejemplo
Option Explicit
Dim i As Integer
For i = 0 To El_TextBox.Count - 1
El_TextBox(i).Text = vbNullString
Next
End Sub
1 -introducción
En esta sección se ve un repaso básico de las tres formas de trabajar con diferentes tipos de
archivos en visual basic: Archivos secuenciales, archivos aleatorios y archivos binarios.
Por último en el final de la sección, se describe como utilizar sentencias y funciones propias
de visual basic para trabajar con archivos y directorios del sistema operativo, como por
ejemplo la sentencia Dir para buscar ficheros, Filecopy para copiar , ChDir, Mkdir para
crear carpetas y algunas otras funciones relacionadas.
2 - Sentencia Open
Esta sentencia es la encargada de abrir o crear un archivo, ya sea para leer datos del mismo,
sobre escribirlos y/o para agregarle datos.
Esta sentencia tiene una serie de parámetros que varían de acuerdo a lo que queramos
hacer.
Por ejemplo :
Open "c:\prueba.txt" For Input As #1
Este ejemplo abre un archivo para poder acceder a los datos que contenga en su interior.
cuando decimos abrir, estamos diciendo que se encuentra actualmente abierto y alojado en
la memoria ram para poder manipularlo.
Luego la palabra "As #1" indica el número de archivo que estamos utilizando. Este número
lo asignamos nosotros y va desde el rango 1 al 511. El "número de archivo" se utiliza para
poder diferenciar al archivo en el código. Cada archivo que se encuentra abierto no se
puede asignar un número de archivo igual, ya que nos daría un error en tiempo de
ejecución.
Una vez que terminamos de trabajar con un archivo que se encuentra abierto y que no lo
vamos a utilizar mas, debemos cerrarlo. para ello se utiliza la sentencia Close seguido del
número de archivo que lo identifica.
Por ejemplo:
Close #2
Si utilizamos la sentencia Close sin ningún parámetro, o mejor dicho ningún número de
archivo, se cerrarán todos los archivos cargados en memoria por nuestra aplicación (los que
nosotros abrimos con Open).
NumeroArchivo = FreeFile
3 - Archivos secuenciales
Los archivos secuenciales se denominan de esta manera por que la forma de escribir y leer
los datos en un archivo es, desde el principio hasta el fin del archivo, es decir, si yo quisiera
acceder a un determinado dato del archivo y este dato se encuentra en la mitad del archivo,
para llegar a ese dato necesito pasar por todos los demás datos, de forma secuencial.
Por lo general se suelen utilizar los archivos secuenciales, para trabajar con archivos que
contengan una estructura de datos no muy compleja. por que por ejemplo, si utilizáramos
un archivo para almacenar 50000 nombres con sus respectivos datos (apellido, teléfono,
dirección etc...) , este mecanismo resultaría ineficiente, ya que si quisiera recuperar por
ejemplo el registro n° 3650, para leer este dato tendría que pasar previamente por los 3649
registros anteriores a este, haciendo mas lento el acceso y por lo tanto desperdiciando
recursos del sistema.
Ejemplo :
Este ejemplo abre un archivo para leer los datos del mismo. En las próximas líneas veremos
ejemplos de como leer los datos , escribir y guardar.
Una cosa importante con respecto a leer datos de un archivo con Input es que, si el archivo
que queremos abrir, no existe, se producirá un error en tiempo de ejecución al intentar abrir
un archivo que no existe, por eso debemos verificar la ruta del mismo siempre que esté bien
escrita en la sentencia Open y evitarnos dolores de cabeza, y simpre añadir algún
manejador de error para este caso
Output: esta sentencia se utiliaza para crear un archivo de texto y grabar datos. Esta es
igual que Append salvo por un gran detalle:
Conclusión : si vamos a añadir datos a un archivo existente (para actualizarlo por ejemplo)
hay que utilizar la sentencia Append. si vamos a crear un archivo vacío y nuevo para
grabar nuevos datos, hay que utilizar la sentencia Output. si vamos a abrir un archivo para
leer datos utilizamos la sentencia Input.
C omo se comentó antes , para leer datos de un archivo se utiliza la sentencia Input.
pero para leer los datos del archivo y poder utilizarlos en nuestro programa se utilizan 2
sentencias o instrucciones: Line Input e Input.
Ejemplo:
Close #1
En el ejemplo anterior aparece una función nueva llamada EOF. Esta función significa End
Of File o fin de archivo.
Cuando abrimos un archivo para leer información con Input, debemos saber en que
momento llegamos al final del archivo, por que de lo contrario la sentencia Line Input o
Input seguiría leyendo líneas donde no existen datos después del fin del archivo, y por lo
tanto se produciría un error en tiempo de ejecución por querer leer un dato que no
existe.
Mediante la condición Not Eof(1) leeremos los datos hasta que llegue al final del archivo, y
en cada pasada del bucle While se almacenará en la variable mivariable, línea por línea los
datos del mismo. Es evidente que como está planteado el ejemplo habría que manipular los
datos leídos y agregar otras instrucciones, por que en este ejemplo la variable mivariable
solo almacenaría los datos de la línea que está leyendo y borrando los datos de las líneas
que almacenó anteriormente. Mas adelante veremos como solucionar esto.
conclusión : para leer datos de un archivo se utiliza la sentencia Line Input y luego de la
coma debemos poner una variable nuestra para almacenar los datos que se van leyendo de
la línea actual
Lo siguiente, lee un archivo de texto línea por línea, y carga el contenido en un control
ListBox. colocar un control List1, un Command1 y un Text1 para indicar el path del
archivo a leer:
Option Explicit
'Lee la linea
Line Input #n_File, Linea
List1.AddItem Linea
Loop
Exit Sub
errSub:
'error
MsgBox "Número de error: " & Err.Number & vbNewLine & _
"Descripción del error: " & Err.Description, vbCritical
End Sub
End Sub
Este otro ejemplo, lo que hace es leer un archivo de texto para contar las líneas del mismo
Dim F As Integer
Dim Lineas As Long
Dim str_Linea As String
End Function
End Sub
Un ejemplo:
El Textbox que mostrará los datos del fichero, colocarle el nombre txt_Contenido
Código en un botón:
Exit Sub
Err_Sub:
Ejemplo:
Close #1
Primero abrimos el archivo con Open. luego la sentencia Print lleva 2 parámetros. el
primero indica el archivo que estamos manipulando (el archivo n°1, dentro del código), el
segundo parámetro indica los datos que se agregarán en el mismo. En el segundo parámetro
podemos poner un dato directamente (una cadena, número, etc...),, por último cerramos el
archivo.
A diferencia de Print, la sentencia Write escribe datos en un archivo separados por comas.
Ejemplo:
nombre = "Carlos"
Close #1
Como podemos ver la sentencia Write escribe los datos en el archivo separados por coma.
En la primera línea escribirá el contenido de las variables nombre y apellido . También se
pueden pasar los datos directamente a Write sin usar variables, por ejemplo:
Nota importante: cuando escribimos datos con la sentencia Print se utiliza la sentencia
Line Input para leer los datos del archivo. En cambio cuando escribimos datos separados
por comas con la sentencia Write debemos utilizar la sencia Input
Para que esta página no sea tan extensa, he armado 10 ejercicios que utilizan todo lo visto
hasta aquí, o sea el tema relacionado a los archivos secuenciales. Dentro del código se
encuentra detallado cada paso y lo podés descargar al final de esta página.
En cambio los archivos aleatorios, también llamados archivos directos, almacenan los datos
con una estructura diferente. Los datos se guardan en registros mediante una estructura
definida de tipo Type (estructura definida por nosotros) también llamada UDT
Por ejemplo si tuviesemos 25 registros, cada uno con datos (apellido, email, telefono,etc..),
y quisiera acceder al registro 17, puedo leer los datos del registro 17 sin tener que leer los
16 registros anteriores, ganando con ello mas velocidad y teniendo una estructura de datos
definida.
Para abrir un archivo aleatorio para trabajar con él, se utiliza la sentencia Open con
algunos cambios en lo que se refiere a los archivos secuenciales
Ejemplo:
Como podemos ver para abrir un archivo de acceso aleatorio se utiliza la palabra Random
(aleatorio). Luego debemos indicar el número de archivo para identificarlo, y por último
una opción nueva : Len.
cada registro en el archivo, que es una estructura de datos Type, tiene que tener una
longitud fija. Mediante la función Len de visual Basic debemos indicar el tamaño de la
estructura de datos que vamos a utilizar. para que quede mas claro un ejemplo:
nombre As String * 20
apellido As String * 15
dirección As String * 30
edad As Integer
End Type
La estructura de datos debe tener un tamaño fijo, no datos variables como en el caso de los
archivos secuenciales, de ahí que se indicara en el Type en las variables mediante el
asterisco en el caso de los String.
primero declaramos una estructura de datos que contendrá la información de cada registro:
empleados.nombre = "Carlos"
empleados.apellido = "Martinez"
empleados.dirección = "Avenida 9 de julio n° 2054"
empleados.edad = 45
Ahora grabamos en el registro n°1 del archivo los datos de esta forma:
Si queremos grabar mas datos, por ejemplo en el registro n° 2 del archivo hacemos lo
siguiente:
empleados.nombre = "María"
empleados.apellido = "Gonzales"
empleados.dirección = "Avenida 13 n° 1100"
empleados.edad = 35
Close #1
como vemos ver la sentencia Put lleva 3 parámetros. El primero indica el numero de
archivo abierto en el cual estamos trabajando. en el segundo debemos indicar el número de
registro en el que se grabarán los datos. Si no ponemos el número de registro, los datos se
grabarán en el último registro. Por último en el tercer parámetro le pasamos la variable
asociada con la estructura de datos.
Para leer los registros o datos de un archivo aleatorio se utiliza la sentencia Get. Esta
sentencia es exactamente igual que Put, pero la diferencia es que en vez de grabar los datos
los recupera para poder utilizarlos luego en el programa.
14 - Función Dir
La función Dir se utiliza o para buscar archivos y devuelve una cadena que representa el
nombre de un archivo o directorio de acuerdo a un determinado patrón de búsqueda. La
sintaxis de la función es:
Ejemplo:
Archivoabuscar = Dir("c:\autoexec.bat")
En este ejemplo devuelve el primer archivo exe que encuentra, si es que existe.
Archivoabuscar = Dir("c:\windows\*.exe")
El único inconveniente de esta función es que siempre devuelve el primer archivo que
encuentra. Para que continúe buscando los demás archivos debemos poner la función sin
parámetros. Ejemplo
archivo = Dir("c:\*.exe")
En el ejemplo anterior buscará todos los archivos exe en el directorio c:\. cuando ya no
encuentre mas devolverá una cadena vacía y saldrá del bucle While.
If Len(Trim$(Dir$(path))) Then
Verificar_Existe = True
Else
Verificar_Existe = False
End If
MsgBox Verificar_Existe
End Function
Call Verificar_Existe("c:\autoexec.bat")
End Sub
El siguiente enlace muestra un ejemplo de como utilizar la función Dir para buscar archivos
y también ordenarlos enforma alfabética y luego agregar la lista en un control Listbox
Este otro enlace muestra como buscar ficheros mediante el Api de windows
15 - Función FileCopy
FileCopy nos permite copiar archivos. Esta función es muy fácil de usar. ejemplo:
16 - Función MkDir
Esta función se utiliza para crear directorios, pero crea un directorio por vez, es decir que
no crea varios niveles al mismo tiempo. La sintaxis es:
para poder crear un Directorio que contiene varios subdirectorios, podemos hacer lo
siguiente:
El ejemplo despliega un InputBox para ingresar el path a crear:
Dim i As Integer
Dim Array_Dir As Variant
Dim Sub_Dir As String
Dim El_Path As String
'Desglosa el path
Array_Dir = Split(El_Path, "\")
El_Path = vbNullString
Sub_Dir = Array_Dir(i)
End Sub
17 - Función kill
La función kill se utiliza para eliminar archivos. También es muy fácil de utilizar, y el
único parámetro que lleva es la ruta del archivo que queremos eliminar. Si queremos
eliminar varios archivos de un directorio podemos utilizar el comodín"*", y si queremos
excluir ciertos archivos utilizamos el comodín "?".
kill "c:\*.txt"
18 - Función FileLen
Ejemplo:
tamaño = FileLen("c:\windows\system32\control.exe")
FileLen es muy útil para trabajar con archivos aleatorios, ya que si queremos conocer la
cantidad de registros que tiene el archivo, debemos dividir el tamaño del archivo por el
tamaño de la estructura.
Ejemplo:
nombre As String * 20
apellido As String * 20
End Type
End Sub
19 - Función Name
Name se utiliza para renombrar archivos y directorios. Esta función no se puede utilizar
para renombrar archivos abiertos.
Ejemplo:
Name "path del archivo viejo a renombrar" as "path y nombre nuevo del archivo"
También con esta sentencia podemos mover archivos y directorios a otra ubicación. para
ello debemos cambiar en el segundo parámetro la ruta del archivo.
• 0 - normal
• 1 - solo lectura
• 2 - oculto
• 4 - archivo de sistema
• 16 - directorio
• 32 - archivo modificado
Option Explicit
End Sub
La función SetAttr lo que hace es establecer los atributos de un archivo .
Ejemplo:
21 - Función RmDir
RmDir elimina directorios o carpetas. Pero antes de eliminar directorios tenemos que estar
seguros que la carpeta no contiene archivos, de lo contrario nos dará un error en tiempo de
ejecución. Si el directorio contiene archivos debemos eliminarlos previamente con la
sentencia kill.
Ejemplo:
1 - Introducción
Estos objetos que tienen sus propiedades y métodos definidos como cualquier otro objeto,
son fundamentales para utilizarlos en tiempo de ejecución, y nos permiten obtener
información y realizar tareas específicas y variadas como por ejemplo:
Trabajar con la pantalla (objeto Screen), obtener datos referentes a nuestra aplicación
( objeto App), el objeto Clipboard ( para trabajar con el portapapeles de windows) y
algunos otros
2 - El objeto App
El objeto App posee una serie de propiedades para obtener información de nuestra
aplicación
Propiedad Path
Esta propiedad nos devuelve una cadena con la ruta donde se encuentra el ejecutable de
nuestro programa. Esta propiedad es de suma importancia, ya que nosotros siempre
debemos "programar las rutas" de nuestra aplicación de forma relativa, es decir en donde
realmente se encuentre nuestra aplicación, ya que el usuario puede instalar nuestro
programa en un directorio cualquiera y de este modo si nosotros hemos puesto, por ejemplo
de un archivo externo en una ruta absoluta (por ejemplo "c:\Archivos de programa", puede
darse el caso de que la aplicación no encuentre dicho archivo ya que se ha instalado en otro
directorio, ejecutarse en otra plataforma, etc..
Para resolver estos problemas sobre las referencias a las rutas de archivos, podemos utilizar
el objeto App.path, y lo que hace esta propiedad es devolvernos el path de nuestra
aplicación.
Ejemplo
Nota: lo que hay que tener en cuenta para que no se produzca un error en tiempo de
ejecución, es que el objeto App.path nos devuelve solo el nombre de directorio de nuestra
aplicación pero sin la barra invertida al final, es decir que si deseamos por ejemplo hacer
referencia a un archivo de nuestra aplicación para trabajar con él, debemos agregarlo
nosotros.
Otro ejemplo podría ser el siguiente, supongamos que tenemos un programa que carga una
imagen en un formulario. Si nosotros hacemos una referencia al archivo de imagen
mediante una ruta absoluta estaremos cometiendo un error, lo correcto sería
Me.Picture = LoadPicture(Ruta)
Propiedad PrevInstance del objeto App
Esta propiedad se utiliza para comprobar si nuestro programa ya está cargado en memoria
devolviéndonos un valor de tipo boolean, True en caso correcto o False si no está abierto o
cargado en memoria.
La propiedad PervInstance es importante ya que un usuario, por error, puede abrir mas de
una instancia de la aplicación, algo que no tendría mucho sentido en la mayoría de los
casos.
De este modo si se intenta abrir el programa mas de una vez, podemos mostrar un mensaje
informativo y descargar la aplicación mediante la sentencia End, o no mostrar nada y
terminar la ejecución. Este ejemplo muestra un mensaje cuando se intenta abrir mas de una
ves, y luego de aceptar el mensaje se cierra con End
End If
End Sub
MsgBox "La resolución en Pixeles del monitor es de: " & vbNewLine & _
"Ancho: " & Ancho & vbNewLine & _
"Alto: " & Alto, vbInformation
Para obtener el alto y el ancho en pixeles debemos hacer una simple conversión ya que
mediante las propiedades width y height obtenemos el ancho y el alto del monitor pero
expresado en twips, para obtener ese valor en pixeles hay que dividirlo por la propiedad
TwipsPerPixelX y TwipsPerPixelY, que son propiedades que las podemos acceder desde el
objeto Screen
El objeto screen posee un objeto o colección llamado Fonts que es un vector que contiene
las fuentes del sistema y una propiedad llamada FontCount para saber la cantidad de
fuentes.
Next La_Fuente
Mediante 4 líneas de código tenemos un control ListBox que muestra el nombre de todas
las fuentes del sistema.
Nota: Para poder obntener las fuentes pero de una impersora, se realiza igual que en el paso
anterior , con la diferencia que en ves de usar el Objeto Screen, se usa el Objeto Printer.
Por ejemplo
Option Explicit
Private Sub Combo1_Click()
Ver_fuentes Combo1.ListIndex
End Sub
End Sub
Dim i As Integer
List1.Clear
End Sub
Enlaces relacionados
Listar las fuentes de windows y previsualizarlas
4 - El objeto ClipBoard
Con ClipBoard podemos trabajar con el portapapeles de windows, ya sea para establecer o
recuperar datos del mismo.
Ejemplo:
cadena = Clipboard.GetText
MsgBox cadena
Con el método Clear del objeto ClipBoard podemos borrar el contenido del portapapeles
(no requiere ningún parámetro)
Clipboard.clear
Con la siguiente línea podemos copiar una imagen del portapapeles a un control picture, si
es que la hay, usando el método Getdata del objeto Clipboard
Picture1.Picture = Clipboard.GetData
Clipboard.SetData Picture1.Picture
Ejemplo para crear menúes y menúes contextuales o también llamados menú PopUp, que
son aquellos que se despliegan con el botón derecho del mouse.
Casi todas las aplicaciones por mas pequeñas que sean, poseen un acceso a determinadas o
casi todas las opciones de un programa por medio de un menú.
Si bien las opciones las podemos encontrar en la interface misma de la aplicación, ya sea
por medio de botones, barras de herramientas etc.., nunca está demás que estén a mano por
medio de un menú.
Visual Basic incorpora una herramienta llamada editor de menúes para poder crearlos
Nota: El editor de Manúes se encuentra en el menú herramientas y solo está disponible
desde la vista diseño del formulario, es decir que si estás visualizando la ventana de código
o un módulo de código deberás cerrarlas y dejar visible el formulario que estés diseñando
para que la opción esté habilitada.
Los menúes de cabecera son los menúes principales que contienen otros submenues. Por
ejemplo en el menú del internet explorer, el menú archivo es el menú de cabecera o de
primer nivel, y las opciones internas de este (abrir, guardar, imprimir, cerrar, etc...) son los
submenues que están en un nivel por debajo del menú archivo.
Crear un menú
1. El primer paso es diseñar un buen diagrama que incluya la mayoría de las opciones,
para que el usuario las pueda tener a mano también en el menú.
2. Si observas otras aplicaciones, estas respetan el orden y ubicación de sus menues, es
decir que si estás creando un programa que tiene opciones para imprimir una hoja,
esta se encontrarán en la sección del menú archivo, si tienes opciones de edición del
documento como cortar copiar, pegar , seleccionar todo, etc..., las encontrarás en el
menú "edición", si deseas crear un formulario "acerca de..", lo ubicarás en el menú
ayuda con el "nombre acerca de...". esta forma de diseño y diagramación es
fundamental para que el programa sea estándar y aceptado por todos, por llamarlo
de alguna manera, ya que si bien nosotros recordamos el nombre y donde se
encuentra ubicada cada opción, un usuario o tercero debe resultarle lo mas sencillo
posible el acceso a las opciones del mismo.
El siguiente ejemplo consiste en un formulario que contiene solo un control label que nos
mostrará una leyenda con el texto del menú que seleccionamos o presionamos.
1. Archivo : Este menú contendrá los submenues " Abrir ", " Guardar ", " Imprimir " y
" Cerrar "
2. Edición: Contendrá los submenues " Cortar ", " Copiar ", " Pegar ", " Seleccionar
todo "
3. Ayuda : Tendrá los submenues " Ayuda " y " Acerca de.. "
El cuadro de diálogo del editor de menú de visual basic posee los siguientes campos para
rellenar. Algunos son opcionales y otros son obligatorios, como la propiedad Caption y
Name:
• Caption: en este campo debemos colocar la leyenda que mostrará el menú, es decir
el texto que mostrará el mismo.
• Name: en este campo debemos introducir un nombre para cada menú. Este es
obligatorio y no puede estar duplicado ya que por medio de este nombre
identificaremos al menú en el código.
• Index: en este campo que es opcional podemos introducir un número para formar
vectores de menues o arreglos de menues, en este ejemplo no se usa, por ejemplo
para crear menues en forma dinámica en tiempo de ejecución
• helpcontextid: este campo opcional podemos introducir un n° para el tópico de
ayuda, por si el usuario presiona la tecla F1 justo cuando está posicionado en el
menú.
• Shortcut: Podemos ingresar una tecla de acceso rápido al menú para que se
despliegue el mismo automáticamente, como por ejemplo Ctrl + a, Ctrl + b, etc...
• Checked: este campo indica si el menú tendrá un tilde a la izquierda o no. Si está en
true lo muestra si está en False no. El campo es de tipo opcional.
• Enabled : propiedad booleana que determina si el menú está habilitado o no. Esta
propiedad es exactamente igual a la propiedad Enabled de cualquier control de
visual basic. El campo por defecto, mejor dicho la propiedad está en True
• Visible : propiedad opcional y de tipo booleana que determina si el menú estará
visible o no. Esta propiedad es ideal para crear los menues contextuales o PopUp
(mas adelante hay un ejemplo de como crear uno).
Pasos a seguir:
1. Una vez abierto el editor de menú, hay que ingreasar los elementos que componen
el mismo. Para crear el menú "Archivo" que es un menú de cabecera o de nivel
superior, debemos ingresar en la propiedad Caption la cadena &Archivo.
Ahora le asignaremos un nombre en el campo Name.
G Generalmente se suele utilizar en este campo el mismo nombre del menú pero
con el prefijo mnu para luego poder distinguirlo fácilmente en el código. Entonces
ingresamos en este campo mnuarchivo
2. El segundo paso será ingresar los submenues que están por debajo del menu
archivo. Para ello presionamos el botón "siguiente" donde ingresaremos el menú
"Abrir". como este es un submenú debemos indicarlo con el botón que tiene una
flecha hacia la Derecha. Al presionarlo ahora el mismo se marca con una doble
comilla (""""), para indicarnos que este menú deriva o está contenido en el menú de
cabecera "Archivo". Ahora pasamos a ingresarle el nombre y la leyenda del menú.
En la propiedad Caption ingresamos &Abrir y en el campo Name : mnuabrir.
3. Ahora repetimos los pasos anteriores para ingresar los submenues restantes del
menú Archivo.
4. Si habrás observado los clásicos menues de las aplicaciones, los submenues se
agrupan en secciones. Por ejemplo en el menú archivo del internet explorer, el
submenú Salir está separado del resto por una línea. para lograr esto se debe crear
un submenú como cualquier otro justo arriba del menú que queremos que aparezca
la línea divisoria, y en la propiedad caption del mismo le colocamos el caracter
menos -
5. Ahora ingresaremos el código para que muestre la leyenda en el control Label cada
vez que presionemos un menú.
6. Como habrás notado, el menú se va incorporando al formulario en tiempo de diseño
como cualquier otro control de visual basic. Para ingresar el código necesario
diremos que cada menú responde a un evento llamado click y que se dispara cuando
presionamos el menú con el mouse o cuando le damos un enter, para ingresar el
código en el menú "Abrir" le damos un click en el mismo menú desde la ventana de
diseño. Una vez abierta la ventana de código aparecerá una rutina como la siguiente:
End Sub
Ahora dentro del evento Click del menú colocamos lo siguiente para que la etiqueta
muestre la propiedad caption del menu abrir al pulsar sobre el menú
Label1.Caption = mnuarchivo.Caption
Nota: cabe aclarar que estas rutinas las podemos invocar o llamar como cualquier otra
rutina de código , por ejemplo en el caso anterior, por ejemplo si coloco esto en un botón se
llamaría al procedimiento Click del menú y se ejecutaría el código.
Call mnuabrir_click
Esto es útil si tenemos una barra de herramientas, ya que no tendremos que escribir código
2 veces, y podemos usar un solo procedimiento haciendo una simple llamada al mismo
• Menu: este es el menú popup que debe estar en el formulario, es decir el nombre
• Flags: este parámetro indica la apariencia del menú en el formulario. Acá podemos
utilizar las siguientes constantes para ubicar el menú:
vbpopupmenuleftalign ubica el menú en el lado izquierdo con respecto a x.
vbpopupmenucentertalign alinea en el centro de la coordenada x.
vbpopupmenurightalign lo alinea en el lado izquierdo. En la mayoría de los casos
este parámetro no se utiliza.
• X e Y: podemos indicar, aunque no se suele utilizar, las posiciones x e y donde debe
desplegarce el menú.
• opcion: en este parámetro opcional , podemos indicar el nombre de un submenú
para que aparezca resaltado en negrita.
Sabiendo esto , para desplegarlo por ejemplo cuando el usuario presiona el botón sobre un
área del formulario, podemos utilizar el evento MouseUp o MouseDown del mismo y
consultar la variable Button del procedimiento y mediante una estructura IF - Then
comprobar si el botón que presionamos es el derecho , utilizando las constantes
VbRightButton, vbLeftButton
End Sub