Page 40
Image_375_0
Arrays unidimensionales. Ejemplos en Visual Basic.
__rendered_path__3
EJERCICIO:
Crea el código de dos programas que cumplan las siguientes premisas:
a) Programa 1.
Declara un array tipo Integer denominado Numerodecoches cuyo número de elementos sea 24. Declara
una variable tipo Integer que se llame R. En el procedimiento de carga del formulario establece el valor
de R en 2 y el valor de Numerodecoches para un localizador de valor R en 233. Procede a mostrar en
pantalla un mensaje que indique cuál es la hora R y el número de coches para la hora R. Finalmente,
modifica únicamente la asignación de valor a R de modo que en vez de 2 sea 21 y ejecuta de nuevo el
programa.
b) Programa 2.
Sobre el programa anterior realiza los siguientes cambios. Mantén el número de elementos de
Numerodecoches en 24. Declara dos variables A y B de tipo Integer. Establece A con valor 8, B con valor
4 y R con valor A dividido entre B. Ejecuta el programa.
SOLUCIÓN:
El programa 1 será el siguiente. Si lo ejecutamos obtendremos "El número de coches en la hora 2 fue
233". Si cambiamos R = 2 por R=21 obtendremos "El número de coches en la hora 21 fue 233".
Para las versiones menos recientes:
Para las versiones más recientes:
Image_415_0
Rem Curso Visual Basic aprenderaprogramar.com
REM Curso Visual Basic aprenderaprogramar.com
Image_416_0
Option Explicit
Option Explicit On
Dim Numerodecoches(23) As Integer
Dim R As Integer
Public Class Form1
Dim Numerodecoches(23) As Integer
Dim R As Integer
Private Sub Form_Load()
R = 2
Private Sub Form1_Load(ByVal sender As System.Object,
Numerodecoches(R) = 233
ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox ("El número de coches en la hora "
R = 2
& R & " fue " & Numerodecoches(R))
End Sub
Numerodecoches(R) = 233
MsgBox("El número de coches en la hora " & R & " fue
" & Numerodecoches(R))
End Sub
Image_403_0
End Class
__rendered_path__57
Image_405_0
Nota: usamos Numerodecoches(23) en lugar de Numerodecoches(24) porque el número de elementos
__rendered_path__71
es uno más que el declarado debido a que se cuenta el cero. Así, si declaráramos Numerodecoches(24)
tendríamos 25 elementos (correspondientes a los elementos del 1 al 24 más el elemento cero).
__rendered_path__1
©2006-2029 aprenderaprogramar.com

Page 41
Image_375_0
Arrays unidimensionales. Ejemplos en Visual Basic.
__rendered_path__3
El programa 2 será el siguiente. Recuerda también que usar una declaración tipo Dim A, B As Integer no
sería válida porque supondría que A queda declarada como tipo Variant o tipo Object. Para que no haya
duda usaremos Dim A%, B% ó Dim A As Integer, B As Integer
Para las versiones menos recientes:
Para las versiones más recientes:
Image_422_0
Rem Curso Visual Basic aprenderaprogramar.com
REM Curso Visual Basic aprenderaprogramar.com
Image_423_0
Option Explicit On
Option Explicit
Dim Numerodecoches(23) As Integer
Public Class Form1
Dim Numerodecoches(23) As Integer
Dim A%, B As Integer
Dim A As Integer, B As Integer
Dim R As Integer
Dim R As Integer
Private Sub Form1_Load(ByVal sender As System.Object,
Private Sub Form_Load()
ByVal e As System.EventArgs) Handles MyBase.Load
A = 8
A = 8
B = 4
R = A / B
B = 4
R = A / B
Numerodecoches(R) = 233
MsgBox ("El número de coches en la hora "
Numerodecoches(R) = 233
MsgBox("El número de coches en la hora " & R & " fue
& R & " fue " & Numerodecoches(R))
" & Numerodecoches(R))
End Sub
End Sub
End Class
Image_403_0
__rendered_path__40Image_405_0
__rendered_path__58
Próxima entrega: CU00312A
Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la dirección siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61
__rendered_path__1__rendered_path__36
©2006-2029 aprenderaprogramar.com

Page 42
Image_430_0
Arrays (arreglos) multidimensionales en Visual Basic
__rendered_path__4
ARRAYS MULTIDIMENSIONALES EN VISUAL BASIC
Tal y como explicamos en su momento, será posible crear arrays con más de una dimensión, pasando
de la idea de lista, vector o matriz de una sola fila a la idea de matriz de m x n elementos, estructuras
tridimensionales, tetradimensionales, etc. La sintaxis será:
__rendered_path__19__rendered_path__20
Dim [Nombre del array]([dimensión1, dimensión2, ...]) As [Tipo de variable]
__rendered_path__16__rendered_path__21__rendered_path__22
__rendered_path__17__rendered_path__19
Si no se declara el tipo de variable el array será tipo Variant u Object (según la versión de Visual Basic
__rendered_path__23
que utilicemos) por defecto. Conviene tener cuidado con esto y seguir las mismas pautas que hemos
__rendered_path__20
indicado para las variables. La declaración de una matriz tradicional de m x n elementos podría ser:
__rendered_path__23
__rendered_path__22
Dim A(3, 2) As Integer
Image_433_0
__rendered_path__72
El número de elementos declarados se calcula teniendo en cuenta que la numeración de los índices
empieza en cero, aunque ya hemos comentado que en algunas versiones existe una cláusula
denominada Option Base que permite fijar como primer índice de los arrays el uno. En las versiones
más recientes de Visual Basic (o con Option Base fijado en cero) tendremos una fila cero y una columna
cero para la matriz declarada, con lo que el número de elementos será de 4 x 3 = 12. Decimos que hay 4
filas que son 0, 1, 2, 3 y tres columnas que son 0, 1, y 2. Si la versión de Visual Basic lo permite y fijamos
Option Base en uno, la matriz será de 3 filas (1, 2 y 3) y dos columnas (1 y 2) siendo por tanto el número
de elementos 3 x 2 = 6
Vamos a definir una matriz, array o arreglo de dos dimensiones a modo de ejemplo: queremos
almacenar en una matriz el número de alumnos con que cuenta una academia ordenados en función
del nivel y del idioma que se estudia. Tendremos 3 filas que representarán Nivel básico, medio o de
perfeccionamiento y 4 columnas que representarán los idiomas (1 = Inglés, 2 = Francés, 3 = Alemán y 4
= Ruso). La declaración de dicha matriz sería:
Image_432_0
Dim Alumnosfxniveleidioma(3, 4)
Image_431_0
__rendered_path__76
Podríamos asignar contenidos de la siguiente manera:
Alumnosfxniveleidioma(1, 1) = 7
Alumnosfxniveleidioma(1, 2) = 14
Alumnosfxniveleidioma(1, 3) = 8
Alumnosfxniveleidioma(1, 4) = 3
Alumnosfxniveleidioma(2, 1) = 6
Alumnosfxniveleidioma(2, 2) = 19
Alumnosfxniveleidioma(2, 3) = 7
Alumnosfxniveleidioma(2, 4) = 2
Alumnosfxniveleidioma(3, 1) = 3
Alumnosfxniveleidioma(3, 2) = 13
Alumnosfxniveleidioma(3, 3) = 4
Alumnosfxniveleidioma(3, 4) = 1
__rendered_path__1
© 2006-2029 aprenderaprogramar.com

Page 43
Image_430_0
Arrays (arreglos) multidimensionales en Visual Basic
__rendered_path__4
Los elementos de índice cero no los estamos utilizando, aunque podríamos hacerlo si quisiéramos.
La representación gráfica que podríamos asociar a esta asignación de datos sería esta matriz:
38147
27196
14133
La organización de la información en matrices nos generará importantes ventajas a la hora del
tratamiento de datos en nuestros programas.
Para terminar en cuanto a multidimensionalidad, veamos casos de declaraciones con más de dos
dimensiones. Para ello tomaremos como ejemplo el conteo del número de coches que pasan por una
vía en un periodo de tiempo. La forma de declarar esos array sería la siguiente (hemos considerado que
usamos el tipo de datos Integer para almacenar la información):
__rendered_path__52__rendered_path__53
Declaración con Visual
__rendered_path__54__rendered_path__57
Duración del
__rendered_path__44__rendered_path__55__rendered_path__59
Tipo de array
Basic
__rendered_path__40__rendered_path__56__rendered_path__61
conteo
__rendered_path__44__rendered_path__58
(Nc es Númerodecoches)
__rendered_path__39__rendered_path__40__rendered_path__44__rendered_path__55
Un día
Array de un localizador
(hora)
Dim Nc(24) As Integer
__rendered_path__43__rendered_path__44__rendered_path__56
Varios días
Array de dos localizadores
(hora y día)
Dim Nc(24, 31) As Integer
__rendered_path__46__rendered_path__60
Varios meses
Array de tres localizadores
(hora, día y mes)
Dim Nc(24, 31, 12) As
Integer
__rendered_path__52
Varios años
Array de cuatro localizadores
(hora, día, mes y año)
Dim Nc(24, 31, 12, 2999) As
Integer
__rendered_path__62
Varios siglos
Array de cinco localizadores
(hora, día, mes, año y siglo)
Dim Nc(24, 31, 12, 2999,
21) As Integer
__rendered_path__63
__rendered_path__64
__rendered_path__65
Nota: en este ejemplo estamos considerando que no vamos a usar los índices cero de los arrays, pero
__rendered_path__64
podríamos hacerlo, de hecho es habitual.
__rendered_path__1__rendered_path__65__rendered_path__63__rendered_path__66__rendered_path__67__rendered_path__69__rendered_path__44__rendered_path__71__rendered_path__73__rendered_path__71__rendered_path__75__rendered_path__76__rendered_path__77__rendered_path__78__rendered_path__79__rendered_path__80__rendered_path__78__rendered_path__81__rendered_path__82__rendered_path__75__rendered_path__62__rendered_path__83__rendered_path__64__rendered_path__84__rendered_path__64__rendered_path__84__rendered_path__83__rendered_path__66__rendered_path__67__rendered_path__69__rendered_path__44__rendered_path__71__rendered_path__73__rendered_path__71__rendered_path__75__rendered_path__76__rendered_path__77__rendered_path__78__rendered_path__79__rendered_path__80__rendered_path__78__rendered_path__81__rendered_path__82__rendered_path__75__rendered_path__62__rendered_path__83__rendered_path__64__rendered_path__84__rendered_path__64__rendered_path__84__rendered_path__83__rendered_path__66__rendered_path__67__rendered_path__69__rendered_path__44__rendered_path__71__rendered_path__73__rendered_path__44__rendered_path__71__rendered_path__75__rendered_path__76__rendered_path__77__rendered_path__78__rendered_path__79__rendered_path__80__rendered_path__78__rendered_path__81__rendered_path__82__rendered_path__75__rendered_path__62__rendered_path__83__rendered_path__64__rendered_path__84__rendered_path__64__rendered_path__84__rendered_path__83__rendered_path__66__rendered_path__67__rendered_path__69__rendered_path__44__rendered_path__71__rendered_path__73__rendered_path__44__rendered_path__71__rendered_path__75__rendered_path__76__rendered_path__77__rendered_path__78__rendered_path__79__rendered_path__80__rendered_path__78__rendered_path__81__rendered_path__82__rendered_path__75__rendered_path__62__rendered_path__99__rendered_path__64__rendered_path__100__rendered_path__64__rendered_path__100__rendered_path__99__rendered_path__66__rendered_path__67__rendered_path__69__rendered_path__44__rendered_path__71__rendered_path__73__rendered_path__44__rendered_path__71__rendered_path__75__rendered_path__76__rendered_path__77__rendered_path__78__rendered_path__79__rendered_path__80__rendered_path__78__rendered_path__81__rendered_path__82__rendered_path__75__rendered_path__106__rendered_path__53__rendered_path__84__rendered_path__57__rendered_path__84__rendered_path__59__rendered_path__106__rendered_path__61
© 2006-2029 aprenderaprogramar.com

Page 44
Veamos lo que sería un ejemplo de programa con arra
El resultado del programa es que se muestra el mensaje “El alumno número 24 del curso tercero se
en aprenderaprogramar.com
http://www.aprenderaprogramar.com/index.php?opti
Arrays (arreglos) multidimensionales en Visual Basic
__rendered_path__4
String.
Para las versiones menos recientes:
Rem Curso Visual Basic aprenderaprogramar.com
Option Explicit
Dim Nombrealumno(5, 25) As String
Private Sub Form_Load()
Nombrealumno(3, 24) = "Pedro Hernández
González"
MsgBox ("El alumno número 24 del curso tercero
se llama " & Nombrealumno(3, 24))
End Sub
llama Pedro Hernández González”.
Próxima entrega: CU00313A
Acceso al curso completo
© 2006-2029 aprenderaprogramar.com
Image_430_0
y multidimensional, en este caso usando un tipo
Para las versiones más recientes:
Image_465_0Image_463_0
REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On
Public Class Form1
Dim Nombrealumno(5, 25) As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles MyBase.Load
Nombrealumno(3, 24) = "Pedro Hernández González"
MsgBox("El alumno número 24 del curso tercero se llama " &
Nombrealumno(3, 24))
Image_464_0
End Sub
__rendered_path__44
End Class
Image_431_0
-- > Cursos, o en la dirección siguiente:
__rendered_path__1__rendered_path__40__rendered_path__58
on=com_content&view=category&id=37&Itemid=61

Page 45
Image_476_0
Editor de código Visual Basic, lista de miembros automática, etc.
__rendered_path__4
ASISTENCIA DE VISUAL BASIC PARA ESCRITURA DE CÓDIGO
Ya hemos visto dónde debemos escribir el código asociado a un formulario. Hay que destacar que
Visual Basic facilita el que podamos escribir código con rapidez a través de:
Propuestas para elección de tipos de variable, propiedades de un objeto, etc.
Corrección o indicación automática de errores que podamos cometer.
Adelanto de la terminación del nombre de instrucciones o variables que hemos empezado a escribir.
Para que esta asistencia en la escritura esté disponible deberás comprobar:
En las versiones menos recientes, en el menú Herramientas Opciones..., ventana Editor Opciones del
código), que tienes activadas las opciones correspondientes, siendo las principales: Comprobación
automática de sintaxis (Habilitar sugerencias de corrección de errores), Lista de miembros automática,
Información rápida automática y Sugerencias de datos automáticas.
En las versiones más recientes en el menú Herramientas, Opciones, activa la casilla “Mostrar todas las
configuraciones”. A continuación elige Editor de texto, Basic, y comprueba que tienes activadas las
opciones correspondientes, siendo las principales: GeneralLista de miembros automática, General
Información de parámetros, Opciones Específicas – Inserción automática de construcciones End, Lista
descriptiva (nuevo formato) de código, Habilitar sugerencias de corrección de errores y Habilitar
resaltado de referencias y palabras clave.
Una vez verificado esto, vamos a comprobar cómo nos ayuda Visual Basic a escribir código. Dirígete a la
ventana de código y escribe: Dim seleccionado As. Comprobarás cómo aparece una ventana donde
existen diferentes posibilidades:
Image_479_0
A través del cursor o del ratón, selecciona Boolean, con lo cual verás que se escribe automáticamente
Boolean sin necesidad de teclearlo. Por tanto Visual Basic ha interpretado que ibas a definir el tipo de
dato para la variable seleccionado y te ha mostrado las distintas posibilidades que tenías, facilitando la
elección. Borra ahora la declaración de la variable y escribe lo siguiente:
Image_478_0
Dim seleccionado as boolean
__rendered_path__1Image_477_0__rendered_path__75
© 20062029 aprenderaprogramar.com

Page 46
Image_476_0
Editor de código Visual Basic, lista de miembros automática, etc.
__rendered_path__4
Pulsa enter y comprobarás que el texto automáticamente se convierte en:
Image_507_0
Dim seleccionado As Boolean
__rendered_path__62
Es decir, después de haber cometido un error al no poner correctamente las mayúsculas en as boolean,
Visual Basic ha corregido automáticamente la escritura adaptándola a la sintaxis correcta. Esto es muy
útil, ya que nos basta con tener las ideas claras respecto a lo que queremos escribir y saber su sintaxis
aproximada. De los "detalles de sintaxis" se encargará Visual Basic, permitiendo que centremos nuestra
atención en los aspectos principales de la programación.
Las correcciones no son (no pueden serlo) siempre automáticas. En algunos casos nos aparecerá un
mensaje de error indicativo de que Visual Basic no entiende esa sintaxis y en otros no detectaremos
que hemos cometido un error hasta tratar de ejecutar el programa.
Escribe por ejemplo: Dik seleccionado As Boolean
No habrá corrección automática pero al pulsar enter te aparecerá el texto remarcado o subrayado
indicando que Visual Basic detecta que “hay algo extraño” en el código. Esto te servirá para prestar
atención y darte cuenta de que en lugar de Dim has escrito Dik.
Si escribes Dim seleccionado As Voolean no hay corrección automática. Quizás aparezca un subrayado o
remarcado indicando que se detecta algo extraño (o quizás no), ya que Visual Basic no sabe si tú has
creado un tipo de variable al que has llamado Voolean. El error en este caso te saltará, si no lo corriges
antes, al tratar de ejecutar el programa.
El editor de Visual Basic también nos puede ayudar a completar fragmentos de código obligatorios. Por
ejemplo, en las versiones menos recientes cuando escribimos Private Sub form_load() y pulsamos enter
nos aparece automáticamente una nueva línea End Sub, que debe acompañar obligatoriamente a la
línea Private Sub form_load(). En las versiones más recientes si escribimos if seleccionado = True y
pulsamos enter automáticamente nos aparecerá If seleccionado = True Then y en otra línea End If. Ya
que son fragmentos de código que obligatoriamente tenemos que escribir, Visual Basic nos ahorra este
trabajo. Aunque si lo preferimos, podemos desactivar ese autocompletado automático.
Si definimos seleccionado como una variable tipo Boolean y escribimos en el editor: seleccionado =
Comprobarás que aparece una ventanita con dos opciones: false y true.
Image_508_0
Esto es así por estar la variable definida como tipo Boolean. Son los dos valores que se le podrían
asignar y Visual Basic nos lo recuerda. Cuando estamos trabajando con decenas de variables es muy
__rendered_path__1
© 20062029 aprenderaprogramar.com

Page 47
sta de miembros automática, etc.
útil. Podemos seleccionar False o True haciendo uso de
Estas sugerencias automáticas podemos activarlas o desactivarlas según deseemos.
ORDENACIÓN DE LÍNEAS. NUMERACIÓN DE LÍNEAS. ETIQUETAS DE LÍNEAS.
Caso 1 versiones menos recientes:
Caso 1 versiones más recientes:
Caso 2 versiones menos recientes:
Caso 2 versiones más recientes:
Caso 3 versiones menos recientes:
Caso 3 versiones más recientes:
Editor de código Visual Basic, li
__rendered_path__4
Image_516_0
Rem Curso Visual Basic aprenderaprogramar.com
Option Explicit
Dim seleccionado As Boolean
Private Sub Form_Load()
seleccionado = True
MsgBox ("El valor actual de seleccionado es "
& seleccionado)
End Sub
__rendered_path__47
Image_513_0
Rem Curso Visual Basic aprenderaprogramar.com
Option Explicit
Dim seleccionado As Boolean
Private Sub Form_Load()
10 seleccionado = True
20 MsgBox ("El valor actual de seleccionado
es " & seleccionado)
End Sub
__rendered_path__115
Image_512_0
Rem Curso Visual Basic aprenderaprogramar.com
Option Explicit
Dim seleccionado As Boolean
Private Sub Form_Load()
Líneaasignacontenido: seleccionado = True
Líneamuestramensaje: MsgBox
("El valor actual de
seleccionado es " & seleccionado)
End Sub
__rendered_path__181
© 20062029 aprenderaprogramar.com
Image_476_0
l cursor o del ratón, sin necesidad de escribirlo.
Image_515_0
REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On
Public Class Form1
Dim seleccionado As Boolean
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
seleccionado = True
MsgBox("El valor actual de
seleccionado es " & seleccionado)
Image_477_0
End Sub
End Class
Image_514_0
REM Curso Visual Basic aprenderaprogramar.com
__rendered_path__59
Option Explicit On
Image_515_0
Public Class Form1
Dim seleccionado As Boolean
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
10: seleccionado = True
20: MsgBox("El valor actual de
seleccionado es " & seleccionado)
End Sub
Image_477_0
End Class
Image_514_0
REM Curso Visual Basic aprenderaprogramar.com
__rendered_path__125
Option Explicit On
Image_515_0
Public Class Form1
Dim seleccionado As Boolean
Private Sub Form1_Load(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Líneaasignacontenido: seleccionado = True
Líneamuestramensaje: MsgBox("El valor actual
de seleccionado es " & seleccionado)
End Sub
__rendered_path__1Image_477_0Image_514_0__rendered_path__192
End Class