Últimos Ejercicios:
 
Promediando Notas Sumar Matrices
Array de Controles Impresión Multilínea
Ordenando una Tabla Función Mid
TreeView Movimiento
Efectos Visuales Método Line
Eventos con el Mouse Manejo de Errores
Música Video
Cálculo de interés Arreglos
Texto3D Carita
 
Ejercicio Nš 71: Promedio de Notas
 
Este ejercicio nos permite ingresar una cantidad de valores, por ejemplo las notas de un alumno, y luego obtener su promedio. En el formulario usamos cuatro botones, dos cajas de texto, y un ListBox, un frame y tres Labels. El código es el siguiente:
Option Explicit
Dim Nota() As Single
Dim N As Integer 'Número total de notas.


Private Sub cmdBorrarNota_Click()
Dim i As Integer, NotaInd As Integer
NotaInd = List1.ListIndex + 1 'Asigna el orden del elemento de la lista a una variable.
If List1.ListIndex = -1 Then 'Si no esta checheada la lista.
MsgBox "Haga click en la lista para borrar la nota"
Exit Sub
Else
List1.RemoveItem (List1.ListIndex) 'Borra de la Lista la Nota
Text1.Text = "" 'Limpia el texto.
'Eliminar la nota de indice (List1.ListIndex+1) y correr las notas
For i = NotaInd To N - 1
Nota(i) = Nota(i + 1)
Next i
N = N - 1 'actualizando número de notas por ser borrada una.

If N > 1 Then ReDim Preserve Nota(1 To N) 'Reajustando la dimensión del arreglo notas
Text2.Text = ""
End If
End Sub

Private Sub cmdEntrarNota_Click()
If Text1.Text = "" Then 'Si no se han introducido nota.
MsgBox "No se ha introducido una nota"
Text1.SetFocus
Exit Sub
End If
N = N + 1 'Inicializa el conteo de las notas entradas.
ReDim Preserve Nota(1 To N) 'Redimesiona el arreglo.
Nota(N) = Text1.Text 'Asigna el valor al arreglo.
List1.AddItem (Nota(N)) 'Añade la nota a la lista.
cmdEntrarNota.Enabled = False
End Sub

Private Sub cmdPromedio_Click()
Dim Suma As Single
Dim Promedio As Single
Dim J As Integer
If N = 0 Then 'Si el número de notas es cero.
MsgBox "No existen valores para promediar"
Exit Sub
End If
Suma = 0
For J = 1 To N 'Suma todas las notas
Suma = Suma + Nota(J)
Next J
Promedio = Suma / N
Text2.Text = Promedio
End Sub

Private Sub cmdSalir_Click()
End
End Sub

Private Sub Form_Activate()
Text1.SetFocus

End Sub

Private Sub Text1_Change()
cmdEntrarNota.Enabled = True
Text2.Text = ""
End Sub

Private Sub Text1_Click()
cmdEntrarNota.Enabled = True
End Sub

Private Sub Text1_GotFocus()
'Para Selelccionar el texto al hacer click en él.
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub

Private Sub Text1_LostFocus()
If IsNumeric(Text1.Text) Then 'Chequea si el valor es numérico.
If Text1.Text <= 0 Then 'Chequea si es mayor que cero.
MsgBox "Valor incorrecto,debe ser mayor que cero", vbCritical
Text1.SetFocus 'Situa el foco en el TexBox Text1.
End If
Else 'Si no es numérico el dato.
MsgBox "El valor debe ser mayor que cero", vbCritical
Text1.SetFocus 'Situa el foco en el TexBox Text1.
End If
End Sub

El ejercicio completo puede bajarse de AQUÍ.

 
Ejercicio Nš 72: Array de controles
 
Este ejercicio es muy simple y nos muestra como hacer un arreglo o matríz de controles. en este caso un array de botones. Nos sirve de introducción al próximo ejercico donde usaremos un array de cajas de texto. El código es el siguiente:

Private Sub Command1_Click(Index As Integer)
'Como es un array de controles. Al copiar el primer botón y pegarlo
'le decimos que sí a la ventana que no dice si queremos crear
'un array de controles.
'A partir de ahora todos responden al mismo evento por eso los
'identificamos por la propiedad INDEX
Label1.Caption = "Hiciste Click en el Botón Nº " & Command1(Index).Caption
End Sub

El ejercicio completo puede bajarse de AQUÍ.

 
Ejercicio Nš 73: Suma de Matrices
 
Este ejercicio lo hicimos a pedido de uno de nuestros visitantes. El formulario consta de tres Frames con arrays de controles de cajas de texto. El código completo es:
Private Sub txtA_Change(Index As Integer)
If IsNumeric(txtA(Index)) Then
txtC(Index) = Val(txtA(Index)) + Val(txtB(Index))
Else
txtC(Index) = "#######"
End If
End Sub

Private Sub txtB_Change(Index As Integer)
If IsNumeric(txtB(Index)) Then
txtC(Index) = Val(txtA(Index)) + Val(txtB(Index))
Else
txtC(Index) = "#######"
End If
End Sub

El ejercicio completo puede bajarse de AQUÍ.

 
Ejercicio Nš 74: Impresión Multilínea
 
Este ejercicio nos permite imprimir texto respetando el corte de línea. El formulario contiene una caja de texto con la propiedad ScrollBar en vertical y la propiedad Multiline en True. Y dos botones uno para dar salida por impresora y el otro para cerrar el programa. El código es el siguiente:

Option Explicit
Dim i As Integer


Private Sub Command1_Click()
'X es 60 en este ejemplo
ImprimeLineas Text1, 60
End Sub

Private Sub ImprimeLineas(Texto As Object, Linea As Integer)
Dim Bloque As String
'Número de caracteres = NumC
'Número de Bloques= NumB
Dim NumC, NumB As Integer
NumC = Len(Texto.Text)
If NumC > Linea Then
NumB = NumC \ Linea
For i = 0 To NumB
Texto.SelStart = (Linea * 1)
Texto.SelLength = Linea
Bloque = Texto.SelText
Printer.Print Bloque
Next i
Else
Printer.Print Texto.Text
End If
Printer.EndDoc
End Sub

Private Sub Command2_Click()
End
End Sub

El ejercicio completo puede bajarse de AQUÍ.

 
Ejercicio Nš 75: Ordenando una Tabla
 
Este ejercicio nos permite ordenar los registros de una tabla en forma ascendente o descendente. Los registros se despliegan en una grilla, y también podemos seleccionar la cantidad de registros que queremos mostrar. Obviamente necesitaremos conexión con una base de datos, para lo que usaremos un control data. El código es:

Dim tipo As Byte
Dim Orden As String


Private Sub Command1_Click()
Dim N As Long
DBGrid1.Visible = True
N = Text1.Text 'Para entrar el número de registros.

Select Case tipo
Case 1
Orden = "DESC"
Case 2
Orden = "ASC"
End Select

'Selecciona a partir de los últimos.
Data1.RecordSource = "SELECT TOP " & N & " * " & _
"FROM Empleados " & _
"ORDER BY IdEmpleado " & Orden
Data1.Refresh
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Form_Load()
N = 3
Text1.Text = 3
Oden = "ASC"
optAscendente_Click
End Sub

Private Sub optAscendente_Click()
If optAscendente.Value Then tipo = 1
DBGrid1.Visible = False
End Sub

Private Sub Option1_Click()

End Sub

Private Sub optDescendente_Click()
If optDescendente.Value Then tipo = 2
DBGrid1.Visible = False
End Sub

Private Sub Text1_Change()
DBGrid1.Visible = False
End Sub

Private Sub Text1_Click()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub

Private Sub Text1_LostFocus()
If IsNumeric(Text1.Text) Then
If ((Text1.Text) >= 1 And (Text1.Text) <= 9) Then
N = Text1.Text
Else
MsgBox "El número de registros debe estar entre 1 y 9", vbInformation
Text1.SetFocus
End If
Else
MsgBox "Entre un valor numérico entre 1 y 9"
Text1.SetFocus
End If
End Sub

El código completo puede bajarse de AQUÍ.
 
Ejercicio Nš 76: Función Mid
 
Este ejercicio nos permite redondear un número decimal, con la cantidad de decimales que deseemos. El código es el siguiente:

Dim Numero As Single
Dim Decimales As Long


Function RedondearNumero(ByVal Valor As Variant, ByVal Decimales As Integer) As Double


Dim Numero1 As Double
Dim Numero2 As Double
Dim Numero3 As Double
Dim Numero4 As Double
Dim Frac As Double
Dim n As Byte
n = InStr(1, Text1.Text, ".") 'posición en que se encuentra el punto decimal
n = Len(Mid(Text1.Text, n + 1)) 'longitud de la cadena de los decimales
If Decimales < n Then 'Si el dato de decimales es menor que el No. de decimales del número
Frac = 10 ^ Decimales
Numero1 = Valor * Frac
Numero2 = Fix(Valor * -Frac) * -1
Numero3 = Numero1 - Numero2
If Numero3 >= 0.5 Then
Numero4 = Int(Numero1 * -1) * -1
Else
Numero4 = Fix(Numero1 * -1) * -1
End If
RedondearNumero = Numero4 / Frac
Else
RedondearNumero = Val(Valor)
End If
End Function

Private Sub Command1_Click()
Label1.Caption = RedondearNumero(Numero, Decimales)
End Sub

Private Sub Form_Load()
Numero = 35.347239
Decimales = 2
Text1.Text = Numero
Text2.Text = Decimales
End Sub

Private Sub Text1_Change()
If Text1.Text = "" Then Exit Sub
If IsNumeric(Text1.Text) Then
Numero = Text1.Text
Label1.Caption = RedondearNumero(Numero, Decimales)
Else
MsgBox "El número debe ser positivo", vbInformation
Text1.SetFocus
End If
End Sub

Private Sub Text2_Change()
If Text2.Text = "" Then
Label1.Caption = ""
Exit Sub
End If
If IsNumeric(Text2.Text) Then
Decimales = Text2.Text
Label1.Caption = RedondearNumero(Numero, Decimales)
Else
MsgBox "El número debe ser positivo", vbInformation
Text2.SetFocus
End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48) Or (KeyAscii > 57) Then 'Para solo permitir números del 0 al 9
If KeyAscii <> 8 Then KeyAscii = 0 'Para aceptar la tecla de retroceso
End If
End Sub

El código completo puede bajarse de AQUÍ.

 
Ejercicio Nš 77: TreeView
 
Este ejercicio muestra el uso de un control llamado TreeView, que debemos traer de componentes del conjunto Microsoft controles. Combinado con un mapa de la Isla de Cuba, para mostrar el nombre de cada provincia y su ubicación. El código es:
Option Explicit
'Dibuja el nombre de Cuba en Relieve en el Formulario.
Function EnRelieve(nombre As Form, A$, x, y)
nombre.CurrentX = x
nombre.CurrentY = y
nombre.ForeColor = QBColor(15)
nombre.Print A$
nombre.CurrentX = x + 8
nombre.CurrentY = y + 10
nombre.ForeColor = QBColor(2)
nombre.Print A$
Form1.Show
End Function
Private Sub Form_Activate()
'Para dibujar en relieve en el formulario el nombre de Cuba.
Call EnRelieve(Form1, "Cuba", 6500, 400)
End Sub

Private Sub Form_Load()
' Este código crea un árbol con objetos Node.
TreeView1.Style = tvwTreelinesPlusMinusText ' Estilo 6.
TreeView1.LineStyle = tvwRootLines 'Estilo de línea 1.

' Agrega varios objetos Node.
Dim nodX As Node ' Crea variable.
'Nodo Principal con la Clave Provincia y el Nombre Provincias
Set nodX = TreeView1.Nodes.Add(, , "Provincia", "Provincias")
Set nodX = TreeView1.Nodes.Add(, , "MunicipioEspecial", "Municipio Especial")
Set nodX = TreeView1.Nodes.Add("MunicipioEspecial", tvwChild, "IslaJuventud", "Isla de la Juventud")
'Nodos Secundarios con el nombre de las provincias.
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Pinar del Rio", "Pinar del Rio")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "La Habana", "La Habana")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Ciudad Habana", "Ciudad Habana")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Matanzas", "Matanzas")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Villa Clara", "Villa Clara")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Cienfuegos", "Cienfuegos")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Santi Spiritus", "Santi Spiritus")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Ciego de Avila", "Ciego de Avila")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Camaguey", "Camaguey")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Las Tunas", "Las Tunas")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Holguin", "Holguin")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Granma", "Granma")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Santiago de Cuba", "Santiago de Cuba")
Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Guantanamo", "Guantanamo")
'Set nodX = TreeView1.Nodes.Add("Provincia", tvwChild, "Isla de la Juventud", "Isla de la Juventud")
nodX.EnsureVisible ' Muestra todos los nodos.
End Sub

Private Sub mnuNuevo_Click()
lblPinarDelRio.Visible = False
lblLaHabana.Visible = False
lblCiudadHabana.Visible = False
lblMatanzas.Visible = False
lblVillaClara.Visible = False
lblCienfuegos.Visible = False
lblSantiSpiritus.Visible = False
lblCiegoDeAvila.Visible = False
lblCamaguey.Visible = False
lblLasTunas.Visible = False
lblHolguin.Visible = False
lblGranma.Visible = False
lblSantiagoDeCuba.Visible = False
lblGuantanamo.Visible = False
lblIslaJuventud.Visible = False
End Sub

Private Sub mnuSalir_Click()
End
End Sub

Private Sub TreeView1_NodeClick(ByVal Node As Node)
Select Case Node
Case "Pinar del Rio"
lblPinarDelRio.Visible = True
Case "La Habana"
lblLaHabana.Visible = True
Case "Ciudad Habana"
lblCiudadHabana.Visible = True
Case "Matanzas"
lblMatanzas.Visible = True
Case "Villa Clara"
lblVillaClara.Visible = True
Case "Cienfuegos"
lblCienfuegos.Visible = True
Case "Santi Spiritus"
lblSantiSpiritus.Visible = True
Case "Ciego de Avila"
lblCiegoDeAvila.Visible = True
Case "Camaguey"
lblCamaguey.Visible = True
Case "Las Tunas"
lblLasTunas.Visible = True
Case "Holguin"
lblHolguin.Visible = True
Case "Granma"
lblGranma.Visible = True
Case "Santiago de Cuba"
lblSantiagoDeCuba.Visible = True
Case "Guantanamo"
lblGuantanamo.Visible = True
Case "Isla de la Juventud"
lblIslaJuventud.Visible = True

End Select

End Sub

El código completo puede bajarse de AQUÍ.

 
Ejercicio Nš 78: Movimiento.
 
En esta aplicación se crean con el método Line por cálculo matemático, las rectas de un recorrido y un ícono cargado en un control Image se desplaza, siguiendo el recorrido de las rectas. El código es:
Option Explicit
Dim x, y, x1, x2, y1, y2, l, t, w, h, m, delta As Single
Dim I As Byte
Sub Mover()
For I = 1 To 4 'Lazo para las 4 rectas.
'Asigna las coordenas para cada una de las 4 rectas.Las Rectas son un arreglo.
x1 = Linea(I).x1
y1 = Linea(I).y1
x2 = Linea(I).x2
y2 = Linea(I).y2

x = x1 'Inicializando la x.
Do Until x >= x2
m = (y1 - y2) / (x1 - x2) 'pendiente de la recta.
y = y1 + m * (x - x1) 'Ecuación de la recta.
l = x - w / 2 'Valor que toma image1.left
t = y - h / 2 'Valor que toma image1.top

Image1.Left = l 'Pasar los valores anteriores
Image1.Top = t 'para mover la imagen.

x = x + delta 'Incrementando la x.
Loop
Next I
Image1.Enabled = False 'Inhabilitarla para impedir que regrese a la posición inicial.
End Sub

Private Sub Form_Load()
'La variable delta se usa para incrementar la x.
delta = 0.05 'Incremento de delta inicial para la velocidad del movimiento
End Sub

Private Sub Image1_Click()
Label1.Visible = False
'Ancho y Alto de la imagen.
w = Image1.Width
h = Image1.Height

Call Mover
End Sub

Private Sub mnIniciar_Click()
Label1.Visible = True
Image1.Enabled = True 'habilitar la imagen
'Llevar la imagen a la posición inicial.
Image1.Left = 420
Image1.Top = 3060
End Sub

Private Sub mnuSalir_Click()
End
End Sub

Private Sub optMediana_Click()
If optMediana.Value Then delta = 0.5
End Sub

Private Sub optPoca_Click()
If optPoca.Value Then delta = 0.05
End Sub

Private Sub optRapida_Click()
If optRapida.Value Then delta = 1
End Sub

El código de la aplicación puede bajarse de Aquí.

 
Ejercicio Nš 79: Efectos Visuales.
 
En este ejercicio vamos a realizar por código, ciertos efectos especiales aplicados a una imágen, durante el proceso de carga de la misma en un control Picture. Para estos efectos usamos el método PaintPicture. El código es el siguiente:


Private Sub Command1_Click()' Efecto estirado de la imagen
Dim i
For i = 1 To Picture1.ScaleWidth Step 3
Picture2.PaintPicture Picture1.Picture, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, 0, 0, i, Picture1.ScaleHeight, &HCC0020
Next i


End Sub

Private Sub Command2_Click()' Efecto persiana

Dim stripes As Integer
Dim i, j As Integer
Dim stripewidth As Integer

Picture2.Cls
stripewidth = 10
stripes = Fix(Picture1.ScaleWidth / stripewidth)

On Error Resume Next
For j = 1 To stripewidth
For i = 0 To stripes
Picture2.PaintPicture Picture1.Picture, i * stripewidth, 0, j, Picture1.ScaleHeight, i * stripewidth, 0, j, Picture1.ScaleHeight, &HCC0020
Next
Next
End Sub

Private Sub Command3_Click()'Efecto barrido desde la derecha

Dim PWidth, PHeight As Integer
Dim i As Integer
pw = 1
ph = Picture1.ScaleHeight

For i = 1 To Picture1.ScaleWidth / 2
Picture2.PaintPicture Picture1.Picture, (Picture1.ScaleWidth - pw) / 2, 0, pw, ph, (Picture1.ScaleWidth - pw) / 2, 0, pw, ph, &HCC0020
pw = pw + 2
Next i

End Sub

El código completo del ejercicio puede bajarse de Aquí.

 
Ejercicio Nš 80: Método Line.
 
En esta aplicación usando el método Line vamos a dibujar rectas, a partir de un apretar el botón izquierdo del mouse, en el formulario arrastramos el mouse y hacemos un soltar el botón izquierdo del mouse, con lo que se dibujara una línea entre los dos puntos, marcados. En las labels se muestran los valores de las coordenadas, de a cuerdo a la ubicación del puntero.
Dim CX As Integer
Dim CY As Integer

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
CX = X
CY = Y

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.Caption = X
Label2.Caption = Y
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Line (CX, CY)-(X, Y)

End Sub

El código del ejercicio completo puede bajarse de Aquí.

 
Ejercicio Nš 81: Eventos con el Mouse.
 
En esta aplicación vamos a crear una pequeña aventura gráfica. Consta de dos formularios. En el primero vamos a hacer Click sobre ciertos objetos que guardamos en el Inventario y luego en el segundo formulario, hacemos Click en los objetos del Inventario y los colocamos en la segunda pantalla, en los lugares correctos. El código del primer formulario es:
 
Option Explicit

Private Sub Image4_Click()
MousePointer = 99
MouseIcon = Image4
Image4.MouseIcon = Image4
Image4.Visible = False
End Sub

Private Sub Image6_Click()
MousePointer = 99
MouseIcon = Image6
Image6.MouseIcon = Image6
Image6.Visible = False
End Sub

Private Sub Image7_Click()
MousePointer = 99
MouseIcon = Image7
Image7.MouseIcon = Image7
Image7.Visible = False
End Sub

Private Sub Image8_Click()
MousePointer = 99
MouseIcon = Image8
Image8.MouseIcon = Image8
Image8.Visible = False
End Sub

Private Sub Image9_Click()
Form2.Show
Form1.Hide
End Sub

Private Sub mnuAyuda_Click()
MsgBox " Recogé los objetos posibles y colocálos en el Inventario por Orden Alfabético, haciéndo Click", , "Mini Aventura"
End Sub

Private Sub mnuReiniciar_Click()
Unload Form1
Unload Form2
Form1.Show
End Sub

Private Sub mnuSalir_Click()
End
End Sub

Private Sub Picture1_Click()
If MouseIcon = Image7 Then
Picture1 = Image7
MouseIcon = Nothing
Form2.Picture1.Picture = Image7
End If
End Sub

Private Sub Picture2_Click()
If MouseIcon = Image4 Then
Picture2 = Image4
MouseIcon = Nothing
Form2.Picture2.Picture = Image4
End If
End Sub

Private Sub Picture3_Click()
If MouseIcon = Image8 Then
Picture3 = Image8
MouseIcon = Nothing
Form2.Picture3.Picture = Image8
End If
End Sub

Private Sub Picture4_Click()
If MouseIcon = Image6 Then
Picture4 = Image6
MouseIcon = Nothing
Form2.Picture4.Picture = Image6
End If
End Sub

 

El código del segundo formulario es:

Option Explicit

Private Sub Image5_Click()
If MouseIcon = Picture1 Then
Image5 = Picture1
MouseIcon = Nothing
Image5.MouseIcon = Nothing
End If
Call corregir
End Sub

Private Sub Image6_Click()
If MouseIcon = Picture3 Then
Image6 = Picture3
MouseIcon = Nothing
Image6.MouseIcon = Nothing
End If
Call corregir
End Sub

Private Sub Image7_Click()
If MouseIcon = Picture4 Then
Image7 = Picture4
MouseIcon = Nothing
Image7.MouseIcon = Nothing
End If
Call corregir
End Sub

Private Sub Image8_Click()
If MouseIcon = Picture2 Then
Image8 = Picture2
MouseIcon = Nothing
Image8.MouseIcon = Nothing
End If
Call corregir
End Sub

Private Sub Image9_Click()
Form1.Show
Form2.Hide
End Sub

Private Sub mniSalir_Click()
End
End Sub

Private Sub mnuAtuda_Click()
MsgBox "Hacé Click en los Objetos del Inventario y Colocálos en los lugares correspondientes", , "Mini Aventura"
End Sub

Private Sub mnuReiniciar_Click()
Unload Form1
Unload Form2
Form1.Show
End Sub

Private Sub Picture1_Click()
MousePointer = 99
MouseIcon = Picture1
Picture1.MouseIcon = Picture1
Picture1.Visible = False
End Sub

Private Sub Picture2_Click()
MousePointer = 99
MouseIcon = Picture2
Picture2.MouseIcon = Picture2
Picture2.Visible = False
End Sub

Private Sub Picture3_Click()
MousePointer = 99
MouseIcon = Picture3
Picture3.MouseIcon = Picture3
Picture3.Visible = False
End Sub

Private Sub Picture4_Click()
MousePointer = 99
MouseIcon = Picture4
Picture4.MouseIcon = Picture4
Picture4.Visible = False
End Sub

Private Sub corregir()
If Image5 = Picture1 And Image8 = Picture2 And Image6 = Picture3 And Image7 = Picture4 Then
Label2 = "¡¡Correcto!! Completaste la Mini Aventura"
End If
End Sub

El código completo de la Aplicación puede bajarse de Aquí.

 
Ejercicio Nš 82: Manejo de Errores.
 

En este ejercicio vamos a usar una pequeña rutina de control de Errores. El objetivo es buscar en la Unidad A, un archivo determinado, en este caso un .wmf, si no lo encuentra despliega un mensaje, codificado en la rutina de Error.

El código es:

Private Sub Command1_Click()
On Error GoTo ErrorDisco
Image1.Picture = LoadPicture("a:\prntout2.wmf")
Exit Sub
ErrorDisco:
If Err.Number = 71 Then
MsgBox ("Por Favor, Cierre la puerta de la unidad."), , "Disco no preparado"
Resume
Else
MsgBox ("Imposible localizar prntout2.wmf en A:\."), , "Archivo no encontrado"
Resume FinPrueba
End If
FinPrueba:
End Sub

El código completo del ejercicio puede bajarse de Aquí.

 
Ejercicio Nš 83: Música.
 
Este ejercicio permite abrir archivos WAV, ejecutados con el control Multimedia y seleccionados de las carpetas del los distintos dispositivos. El Multimedia control debe traerse desde proyecto, Componentes para ser agregado a la Caja de Herramientas.

El código completo es el siguiente:

Private Sub cmdInicio_Click()
Dim Extension As String
Busqueda = "." ' Busqueda hasta ".".
If InStr(1, File1.FileName, ".") Then 'Si encuentra el signo "."
'Comparacion
MiPos = InStr(File1.FileName, Busqueda) ' Regresa la posición de ".".
Extension = Mid(File1.FileName, MiPos + 1) 'Escribe extensión cortado despues del punto.
If Extension = "WAV" Or Extension = "wav" Then
MMControl1.FileName = Dir1.Path & "/" & File1.FileName
MMControl1.Command = "open"
MMControl1.Command = "play"
Else
MsgBox "Con esa extensión no puede oir esta musica," & _
"solo permite oir con extension WAV", vbInformation
End If
Else
Exit Sub
End If
End Sub

Private Sub cmdParar_Click()
MMControl1.Command = "stop"
MMControl1.Command = "close"
End Sub

Private Sub cmdPausa_Click()
MMControl1.Command = "pause"
End Sub

Private Sub Dir1_Change()
'Para que aparezcan sólo los archivos de ese directorio.
File1.Path = Dir1.Path
End Sub

Private Sub Form_Load()
MMControl1.DeviceType = "waveaudio"
MMControl1.Command = "close"
End Sub

El código completo de la Aplicación puede bajarse de Aquí.

 
Ejercicio Nš 84: Video.
 
Esta aplicación similar a la anterior, ejecuta videos con el control Multimedia. Seleccionandolos desde las carpetas de los directorios de los distintos dispositivos.Su código es:


Private Sub cmdInicio_Click()
Dim Extension As String
Busqueda = "." ' Busqueda hasta ".".
If InStr(1, File1.FileName, ".") Then 'Si encuentra el signo "."
'Comparacion
MiPos = InStr(File1.FileName, Busqueda) ' Regresa la posición de ".".
Extension = Mid(File1.FileName, MiPos + 1) 'Escribe extensión cortado despues del punto.

If Extension = "AVI" Then
MMControl1.FileName = Dir1.Path & "/" & File1.FileName
MMControl1.Command = "open"
MMControl1.Command = "play"
Else
MsgBox "Con esa extensión no pueden ver videos," & _
"solo permite ver con extension avi", vbInformation
End If
Else
Exit Sub
End If
End Sub

Private Sub cmdParar_Click()
MMControl1.Command = "stop"
MMControl1.Command = "close"
End Sub

Private Sub cmdPausa_Click()
MMControl1.Command = "pause"
End Sub

Private Sub Dir1_Change()
'Para que aparezcan sólo los archivos de ese directorio.
File1.Path = Dir1.Path
End Sub

Private Sub Form_Load()
MMControl1.DeviceType = "avivideo"
MMControl1.Command = "close"
MMControl1.hWndDisplay = Picture1.hWnd
End Sub

El código completo de la Aplicación puede bajarse de Aquí.

 
Ejercicio Nš 85: Cálculo de Interés.
 
En este ejercicio vamos a calcular un interés de tipo financiero, para esto vamos a crear un Módulo con una función específica llamada: CalcPago. Para crear el Módulo vamos a proyecto : agregar Módulo y allí codificamos y luego lo grabamos con la extensión .bas. Desde esta aplicación vamos a usar un objeto OLE que convoque a la aplicación Excel, del Office. El código del formulario es el siguiente:

Option Explicit

Private Sub Command1_Click()
Dim cuotas As Currency
If Not CalcPago(CSng(Text1), Val(Text2), CSng(Text3), cuotas) Then
MsgBox "¡Qué escribiste!, ¡¡No puedo calcular eso!!"
Else ' resultado satisfactorio
Picture1.Visible = True
Label4.Caption = Format(cuotas, " #,##0.00;($#,##0.00)")
End If
End Sub

El código del Módulo es:

Option Explicit

Public Function CalcPago(capital As Currency, año As Integer, interes As Single, cuota As Currency) As Boolean

On Error GoTo repararerror
'dimensiona la variable como objeto
Dim excelapp As Object

' el tipo de apliación es Excel
Const hdExcelObject = "Excel.Application"
Screen.MousePointer = vbHourglass
CalcPago = False

' crea la aplicación en Excel donde se realizará el Cálculo
Set excelapp = CreateObject(hdExcelObject)

'llama al método pmt de Excel
cuota = excelapp.Pmt((interes / 100) / 12, año * 12, -1 * capital)
excelapp.quit
Set excelapp = Nothing
CalcPago = True
Screen.MousePointer = vbDefault
Exit Function

repararerror:
' determina el tipo de error
Select Case Err.Number
Case 429
MsgBox "Imposible crear un Aplicación OLE con Excel." + vbCrLf + " Está seguro de tener una Versión de Excel superior a la 5, y bien instalada?", vbCritical, "Cálculo de pago de Cuotas"
Case Else
MsgBox "Error #" + Str(Err.Number) + ":" + Err.Description + ".", vbCritical, "Cálculo de pago de Cuotas"
End Select
Screen.MousePointer = vbDefault
End Function

El código completo de la Aplicación puede bajarse de Aquí.

 
Ejercicio Nš 86: Texto 3 D.
 
En este ejercicio, vamos a hacer un efecto de texto en tres dimensiones, creando dos procedimientos: recuadro y texto3d, usando las coordenadas y el método Print. El código es:

Option Explicit

Private Sub recuadro()
Dim i As Integer
Form1.ScaleMode = vbPixels
Form1.ForeColor = vbBlack
Const DrawWidth = 3
For i = DrawWidth - 1 To 6 * 6 Step 2
Form1.Line (i, i)-(Form1.ScaleWidth - 1 - i, Form1.ScaleHeight - 1 - i), , B
Next i
End Sub

Private Sub texto3d()
Dim X As Integer
Dim Y As Integer
X = 500
Y = 500
If Form1.ScaleMode <> vbTwips Then Form1.ScaleMode = vbTwips
Form1.ZOrder 0 'lo necesitamos para imprimir por arriba de lo existente
Form1.ForeColor = RGB(32, 32, 32) ' gris oscuro para las sombras
Form1.Font.Name = "Arial"
Form1.Font.Underline = True
Form1.FontSize = 38
Form1.CurrentX = X ' sitúa el cursor
Form1.CurrentY = Y
Form1.Print "Diseño y Programación:"
Form1.CurrentX = 1500

Form1.Print "Mirta Echeverría"
Form1.ForeColor = RGB(255, 255, 255) 'blanco para resaltar
Form1.CurrentX = X - 35 ' coloca la zona a resaltar en la parte superior izquierda
Form1.CurrentY = Y - 45
Form1.Print "Diseño y Programación:"
Form1.CurrentX = 1500

Form1.Print "Mirta Echeverría"
Form1.ForeColor = vbBlue
Form1.CurrentX = X - 25 ' imprime entre el resaltado y la sombra
Form1.CurrentY = Y - 35
Form1.Print "Diseño y Programación:" ' imprime en azul
Form1.CurrentX = 1500

Form1.Print "Mirta Echeverría"
End Sub

Private Sub Form_Load()
Call texto3d
Call recuadro
End Sub

El código completo de la Aplicación puede bajarse de Aquí.

 
Ejercicio Nš 87: Arreglos.
 
En este ejercicio vamos a trabajar con arreglos , simularemos un juego de cartas de dos caras, la matriz o arreglo consta de 10 valores. No olvidena al ejecutarlo seleccionar una opción para mostrar las cartas, o secuencial o aleatorio. El código es el siguiente:

En Option Explicit
Dim ladoA(1 To 10) As String
Dim ladoB(1 To 10) As String
Dim numcarta As Integer
Dim indice As Integer

Private Sub Command1_Click()
'mostrar el lado A de la carta siguiente.

'los botones de opcion seleccionan una carta secuencial o aleatoria
If Option1.Value = True Then
'incrementar el indice actual y comprobar si se encuentra dentro del intervalo de 1 a numcarta.
indice = indice + 1
If indice < 1 Or indice > numcarta Then
'si el indice está fuera del intérvalo, comenzar nuevamente.
indice = 1
End If

ElseIf Option2.Value = True Then
'carta aleatoria. indice aleatorio de 1 a numcaarta.
indice = Fix(numcarta * Rnd) + 1
End If

' mostrar el lado A y el número de carta, Borrar el lado B
Text3.Text = indice
Text1.Text = ladoA(indice)
Text2.Text = ""

' desactivar el botón lado A y activar el botón Lado B
Command1.Enabled = False
Command2.Enabled = True
End Sub

Private Sub Command2_Click()
'mostrar el lado B de la tarjeta actual
Text2.Text = ladoB(indice)

'activa el boton lado A y desactiva lado B
Command1.Enabled = True
Command2.Enabled = False
End Sub

Private Sub Command3_Click()
End
End Sub

Private Sub Form_Load()
' asignar valores a los arrays ladoA y ladoB
numcarta = 7
ladoA(1) = "Nihon´go"
ladoB(1) = "Idioma Japonés"
ladoA(2) = "Ohayo gozaimasu"

ladoB(2) = "Buenos Días"
ladoA(3) = "Ken´nichi wa"
ladoB(3) = "Hola o Buen Día"
ladoA(4) = "Kon´ban wa"
ladoB(4) = "Buenas Tardes"
ladoA(5) = "Oyasumi nasai"
ladoB(5) = "Buenas Noches"
ladoA(6) = "Ja, mata ashita"
ladoB(6) = "Bien, nos veremos mañana"
ladoA(7) = "Sayonara"
ladoB(7) = "Adiós"

'activar el botón ladoA y desactivar el ladoB
Command1.Enabled = True
Command2.Enabled = False
End Sub

El código completo de la Aplicación puede bajarse de Aquí.

 
Ejercicio Nš 88: Carita.
 
Este ejercicio es una nueva versión del juego "Agárrame si puedes". Donde debemos hacer Clic en una carita que se desplaza aleatoriamente por el formulario, dejando un recuadro de color a su paso. El código es el siguiente:

Option Explicit

'Variables Globales
Dim puntaje As Integer
Dim contador As Integer
Dim dificultad As Integer
Dim menuchekeado As Menu

Private Sub Form_Load()
Call ComenzarJuego
End Sub

Private Sub mnuComenzar_Click()
Form1.Cls
Call DibujarPantalla
puntaje = 0
contador = 0
Timer1.Interval = dificultad
End Sub

Private Sub mnuDificil_Click()
dificultad = 500
menuchekeado.Checked = False
Set menuchekeado = mnuDificil
mnuDificil.Checked = True
End Sub

Private Sub mnuFacil_Click()
dificultad = 1000
menuchekeado.Checked = False
Set menuchekeado = mnuFacil
mnuFacil.Checked = True
End Sub

Private Sub mnuImposible_Click()
dificultad = 250
menuchekeado.Checked = False
Set menuchekeado = mnuImposible
mnuImposible.Checked = True
End Sub

Private Sub mnuModerado_Click()
dificultad = 700
menuchekeado.Checked = False
Set menuchekeado = mnuModerado
mnuModerado.Checked = True
End Sub

Private Sub mnusalir_Click()
Unload Form1
End Sub

Private Sub Picture1_Click()
If Timer1.Interval > 100 Then
Beep
puntaje = puntaje + 1
End If
End Sub

Private Sub Timer1_Timer()
Dim x As Integer, y As Integer
Dim BoxX As Integer, BoxY As Integer

x = Int(391 * Rnd + 20)
y = Int(231 * Rnd + 20)
BoxX = Picture1.Left
BoxY = Picture1.Top
Form1.ForeColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)
Form1.Line (BoxX, BoxY)-(BoxX + 100, BoxY + 100), , BF
Picture1.Move x, y
puntaje = puntaje + 1
If puntaje = 30 Then
Timer1.Interval = 0
MsgBox "Su puntaje: " & puntaje, , "¡Agárrame si puedes!"
End If
End Sub

Private Sub ComenzarJuego()
dificultad = 500
mnuModerado.Checked = True
Set menuchekeado = mnuModerado
Randomize
Call DibujarPantalla
Call DibujarCara
End Sub

Private Sub DibujarPantalla()
Form1.ForeColor = vbBlack
Form1.Line (10, 10)-(517, 10)
Form1.Line (10, 10)-(10, 358)
Form1.Line (522, 5)-(522, 362)
Form1.Line (522, 362)-(5, 362)
Form1.ForeColor = vbWhite
Form1.Line (5, 5)-(522, 5)
Form1.Line (5, 5)-(5, 363)
Form1.Line (517, 10)-(517, 358)
Form1.Line (517, 358)-(10, 358)
End Sub

Private Sub DibujarCara()
Picture1.FillStyle = vbSolid
Picture1.FillColor = vbYellow
Picture1.Circle (48, 48), 45
Picture1.FillColor = vbBlack
Picture1.Circle (30, 35), 10
Picture1.Circle (65, 35), 10
Picture1.Circle (47, 55), 8
Picture1.DrawWidth = 2
Picture1.Circle (48, 50), 30, , 3.4, 6, 1#
End Sub

El código completo de la Aplicación puede bajarse de Aquí.

 
 
Volver al Menú Principal Volver a Ejercicios