|
Macros Excel... |
|
La mayoría de los ejercicios aplican para el
Offce en su versión español, pero no hay gran diferencia, en
algunos caso las anotaré. |
|
|
UTILIZANDO FORMULAROS
También podemos utilizar formularios como en un
programa netamente de programación como Visual Basic, de hecho, es lo
que prácticamente estamos manejando en Excel y lo conocemos como Visual
Basic for Aplications.
Como ya había comentado cada quién programa muy
diferente y tiene diferente razonamiento, por ejemplo, en los
formularios se utilizan varios controles los cuales utilizamos para
almacenar, desplegar o calcular datos. hay muchos tipos de controles, no
pretendo explicarlo en esta página, agradecería que se apoyen en
manuales u otras páginas de cursos, pero no esta demás aportar mi
granito de arena, así que mi recomendación es la siguiente:
Recomiendo renombrar los nombres de los controles
dependiendo para que los utilizamos, como por ejemplo (CommandButton1)
que utilizamos para Salir del formulario como (CmdSalir) así entre tanto
código no nos perderemos y resultará más entendible, por cada control lo
podemos hacer por ejemplo como sigue:
Abreviatura |
Nombre Default Control |
Ejemplo de Nombre Compuesto |
Cmd |
CommandButton1 |
CmdConsultar |
Txt |
TextBox1 |
TxtNombre |
Lbl |
Label1 |
LblMensaje |
Cmb |
Combobox1 |
CmbCodigos |
Frm |
Form1 |
FrmAltas |
Para continuar veámos una pantalla de un formulario realizado en
Excel para ejemplificar este tema.
El siguiente código pertenece a esta pantalla, el ejercicio
lo que puedes
descargar en esta sección:
'Cada vez que seleccionamos un
valor diferente en el combobox, los cuadros de texto que tengo en mi
Form se borran
Private Sub CmbCodigos_Change()
TxtDescripcion = Empty
TxtCantidad = Empty
TxtPrecio = Empty
End Sub
'Al hacer click sobre el botón Consulta, si el
combobox está vacío voy al final y muestro un mensaje de no encontrado o
si el valor no existe
Private Sub CmdConsulta_Click()
If CmbCodigos.Text <>
Empty Then
On Error GoTo noencontro
'Este código busca el texto que esta en el
Combobox
Cells.Find(What:=CmbCodigos, After:=ActiveCell, LookIn:=xlFormulas,
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False).Activate
'Si lo encuentra, nos movemos a las celdas de las
columnas consecutivas a la derecha para tomar los valores de éstas
TxtDescripcion = ActiveCell.Offset(0, 1).Value
TxtCantidad = ActiveCell.Offset(0, 2).Value
TxtPrecio = ActiveCell.Offset(0, 3).Value
Exit Sub
Else
noencontro:
MsgBox "No encontrado", vbExclamation + vbOKOnly,
"Buscando"
CmbCodigos = Empty
CmbCodigos.SetFocus
End If
End Sub
'Si cualquiera de los campos están vacíos no se
ejecutará nada
Private Sub CmdEliminar_Click()
If CmbCodigos =
Empty Or _
TxtDescripcion = Empty Or _
TxtCantidad = Empty Or _
TxtDescripcion = Empty Then
Exit Sub
'De lo contrario se mostrará un mensaje de
confirmación para eliminarlo
baja = MsgBox("Deseas dar de baja este
articulo?", vbYesNo + vbQuestion, "**Eliminar Registro")
'Si la respuesta es vbYes entonces eliminará todo
el registro ( fila )
If baja = vbYes
Then
Selection.EntireRow.Delete
Range("A2").Select
'Se dejan vacíos los campos
CmbCodigos = Empty
TxtDescripcion = Empty
TxtCantidad = Empty
TxtPrecio = Empty
'Se "refresca" el listado del combobox
CmbCodigos.Clear
Sheets(1).Range("A1").Select
Do While ActiveCell <>
Empty
ActiveCell.Offset(1, 0).Select
CmbCodigos.AddItem ActiveCell.Value
Loop
'Se posiciona el cursor sobre el Combobox
CmbCodigos.SetFocus
End If
End Sub
'Si cualquiera de los campos están vacíos no se
ejecutará nada
Private Sub CmdInsertar_Click()
If CmbCodigos =
Empty Or _
TxtDescripcion = Empty Or _
TxtCantidad = Empty Or _
TxtDescripcion = Empty Then
Exit Sub
'De lo contrario seleccionamos la celda A2 para
insertar el registro ahí
Range("A2").Select
'Insertar fila
Selection.EntireRow.Insert
'Llenamos las celdas con los valores introducidos
en los campos
ActiveCell.Value = CmbCodigos
ActiveCell.Offset(0, 1).Value = TxtDescripcion
ActiveCell.Offset(0, 2).Value = Val(TxtCantidad)
ActiveCell.Offset(0, 3).Value = Val(TxtPrecio)
'Vaciamos los datos
CmbCodigos =
Empty
TxtDescripcion = Empty
TxtCantidad = Empty
TxtPrecio = Empty
'Se "refresca" el listado del combobox
CmbCodigos.Clear
Sheets(1).Range("A1").Select
Do While ActiveCell <>
Empty
ActiveCell.Offset(1, 0).Select
CmbCodigos.AddItem ActiveCell.Value
Loop
'Se posiciona el cursor sobre el Combobox
CmbCodigos.SetFocus
End Sub
'Salimos del Formulario
Private Sub CmdSalir_Click()
End
End Sub
'Al mostrarse el formulario se llena el
Combobox con los códigos de la columna A
Private Sub UserForm_Activate()
Sheets(1).Range("A1").Select
Do While ActiveCell <>
Empty
ActiveCell.Offset(1, 0).Select
CmbCodigos.AddItem ActiveCell.Value
Loop
End Sub
|
Secciones Macros VBA:
Introducción
Macros
Macros
Comunes de Celdas, Hojas, Libros
Programación
Macros I
Programación
Macros II
Programación
Macros III
Utilizando
Formularios
Descarga ejercicios correspondientes a esta sección:
Altas, Bajas y Cambios de un Inventario
desde un Formulario
|