Formularios en Excel

26
FORMULARIOS MODULO.- MuestraFormulario Option Explicit 'MACROS PARA MOSTRAR LOS FORMULAROS Sub form1() Load ALUMNOS ALUMNOS.Show End Sub Sub form2() Load Altas Altas.Show End Sub Sub form3() Load MODIFICAR MODIFICAR.Show End Sub Sub form4() Load MODIFICAR BAJAS.Show End Sub MODULO.- Ordena Sub Macro1() Dim i As Integer

description

En este manual podras encontrar programación basica de visual basic para el diseño de formularios.

Transcript of Formularios en Excel

Page 1: Formularios en Excel

FORMULARIOSMODULO.- MuestraFormulario

Option Explicit

'MACROS PARA MOSTRAR LOS FORMULAROS

Sub form1()

Load ALUMNOS

ALUMNOS.Show

End Sub

Sub form2()

Load Altas

Altas.Show

End Sub

Sub form3()

Load MODIFICAR

MODIFICAR.Show

End Sub

Sub form4()

Load MODIFICAR

BAJAS.Show

End Sub

MODULO.- Ordena

Sub Macro1()

Dim i As Integer

ActiveWorkbook.Worksheets("ALUMNOS").Select

Range("A365536").End(xlUp).Offset(1, 0).Select

Page 2: Formularios en Excel

i = ActiveCell.Row

Range("A2:J" & i).Select

ActiveWorkbook.Worksheets("ALUMNOS").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("ALUMNOS").Sort.SortFields.Add Key:=Range("A2"), _

SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("ALUMNOS").Sort

.SetRange Range("A2:J" & i)

.Header = xlNo

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Hoja1.Select

Range("B9").Select

End Sub

MODULO.-Modulo2

Sub Macro2()

Dim i As Integer

ActiveWorkbook.Worksheets("EXTRAS").Select

Range("A365536").End(xlUp).Offset(1, 0).Select

i = ActiveCell.Row

Range("A2" & i).Select

ActiveWorkbook.Worksheets("EXTRAS").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("EXTRAS").Sort.SortFields.Add Key:=Range("A2"), _

Page 3: Formularios en Excel

SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("EXTRAS").Sort

.SetRange Range("A2" & i)

.Header = xlNo

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Hoja1.Select

Range("X9").Select

End Sub

ALTAS

Page 4: Formularios en Excel

Option Explicit

'AGREGAR DATOS

Private Sub CommandButton1_Click()

'declaración de la variable i

Dim i As Integer

'se despliega un mensaje de advertencia si algún TextBox

'no fue llenado

Page 5: Formularios en Excel

'la palabra reservada "Me" hace referencia al UserForm2 (para abreviar)

'pues es lo mismo que poner UserForm2

If Me.NUMERO.Text = "" Then MsgBox ("Campo NUMERO no puede estar vacio"): _

Exit Sub

If Me.NOMBRE.Text = "" Then MsgBox ("Campo NOMBRE no puede estar vacio"): _

Exit Sub

If Me.APELLIDOP.Text = "" Then MsgBox ("Campo APELLIDO PATERNO no puede estar vacio"): _

Exit Sub

If Me.APELLIDOM.Text = "" Then MsgBox ("Campo APELLIDO MATERNO no puede estar vacio"): _

Exit Sub

If Me.EDAD.Text = "" Then MsgBox ("Campo EDAD no puede estar vacio"): Exit Sub

If Me.LOCALIDAD.Text = "" Then MsgBox ("Campo LOCALIDAD no puede estar vacio"): _

Exit Sub

If Me.COMUNIDAD.Text = "" Then MsgBox ("Campo COMUNIDAD no puede estar vacio"): _

Exit Sub

If Me.TELEFONO.Text = "" Then MsgBox ("Campo TELEFONO no puede estar vacio"): _

Exit Sub

If Me.GRUPO.Text = "" Then MsgBox ("Campo GRUPO no puede estar vacio"): _

Exit Sub

If Me.TURNO.Text = "" Then MsgBox ("Campo TURNO no puede estar vacio"): Exit Sub

'la sentencia de abajo se pone para evitar los flashes de pantalla

Application.ScreenUpdating = False

'se selecciona la hoja 2 que es donde está el listado

Hoja2.Select

Page 6: Formularios en Excel

'se asigna a la variable i el valor de la última fila con datos +1

'con Range("A" & Rows.Count).End(xlUp).Row + 1, es decir,

'se va hasta la última fila de la columna "A"(1048576 en la versión 2007

'o 65536 en la versión 2003) y de allí se sube con(xlUp)hasta la primera fila

'con datos, luego se le suma una para obtener la fila donde

'se deben agregar los ítems

i = Range("A" & Rows.Count).End(xlUp).Row + 1

'se agregan los nuevos datos

Range("A" & i).Value = NUMERO.Text

Range("B" & i).Value = NOMBRE.Text

Range("C" & i).Value = APELLIDOP.Text

Range("D" & i).Value = APELLIDOM.Text

Range("E" & i).Value = EDAD.Text

Range("F" & i).Value = LOCALIDAD.Text

Range("G" & i).Value = COMUNIDAD.Text

Range("H" & i).Value = TELEFONO.Text

Range("i" & i).Value = GRUPO.Text

Range("j" & i).Value = TURNO.Text

'mensaje de advertencia

If MsgBox("¿VERIFICO QUE TODOS LOS DATOS ESTAN CORRECTOS?", vbExclamation + vbYesNo) = _

vbYes Then

Page 7: Formularios en Excel

'Después de verificar que todos los datos están correctos

'se vacían los TextBox

NUMERO.Text = ""

NOMBRE.Text = ""

APELLIDOP.Text = ""

APELLIDOM.Text = ""

EDAD.Text = ""

LOCALIDAD.Text = ""

COMUNIDAD.Text = ""

TELEFONO.Text = ""

GRUPO.Text = ""

TURNO.Text = ""

'se cierra el if

End If

'se selecciona la hoja 1 para que el formulario

'aparezca en ella

Hoja1.Select

'se selecciona el rango B4 para ocultrlo detrás de un botón

Range("B4").Select

End Sub

'OCULTA EL FORMULARIO ALTAS

Private Sub CommandButton3_Click()

Page 8: Formularios en Excel

Application.ScreenUpdating = False

'se llama a la subrutina Macro1

'que es la que ordena alfabéticamente por marca y modelo

'me parece la mejor ubicación pues si se agregan varios vehículos

'se los ordena todos juntos y no uno por uno como seria el caso

'de habela puesto en la línea 49 de la macro CommandButton1_Click()

Macro1

'se oculta el formulario

Me.Hide 'se podría haber puesto ALTAS.Hide

'se coloca el cursor(foco) en el TextMModelo

NUMERO.SetFocus

End Sub

Private Sub UserForm_Initialize()

Dim A2 As Range

Dim B2 As Range

Dim C2 As Range

Application.ScreenUpdating = False

Hoja3.Select

Range("A2").Select

Page 9: Formularios en Excel

While ActiveCell <> ""

LOCALIDAD.AddItem ActiveCell

ActiveCell.Offset(1, 0).Select

Wend

Macro2

Hoja1.Select

Range("E9").Select

Hoja3.Select

Range("B2").Select

While ActiveCell <> ""

GRUPO.AddItem ActiveCell

ActiveCell.Offset(1, 0).Select

Wend

Hoja1.Select

Range("F9").Select

Hoja3.Select

Range("C2").Select

While ActiveCell <> ""

TURNO.AddItem ActiveCell

ActiveCell.Offset(1, 0).Select

Wend

Page 10: Formularios en Excel

Hoja1.Select

Range("G9").Select

End Sub

ALUMNOS

Option Explicit

Private Sub CommandButton1_Click()

NUMERO = ""

NOMBRE = ""

Page 11: Formularios en Excel

APELLIDOP = ""

APELLIDOM = ""

EDAD = ""

LOCALIDAD = ""

COMUNIDAD = ""

TELEFONO = ""

GRUPO = ""

TURNO = ""

Hoja1.Select

Range("B4").Select

ALUMNOS.Hide

End Sub

'SE MUESTRAN TODOS LOS DATOS DE LOS VEHICULOS

Private Sub NUMERO_Change()

'declaración de variables

Dim NUMEROS As String 'a esta variable se le asignará

'el modelo que se selecciona del ComboBox1

Dim idBusca As String 'busca una coincidencia con MarcaModelo

Dim fila As Integer 'variable que comienza en 1 y se incrementa

'hasta que haya coincidencia con MarcaModelo e idBusca

'se elimina el parpadeo de la pantalla

Application.ScreenUpdating = False

Sheets("ALUMNOS").Select

Page 12: Formularios en Excel

Range("A2").Select

fila = 1

NUMEROS = NUMERO

'se entra en un ciclo Do-While-Loop del que se sale si hay coincidencia

'entre idBusca y MarcaModelo, obteniéndose la fila de dicha coincidencia

Do While idBusca <> NUMEROS

fila = fila + 1

idBusca = Range("A" & fila).Value

Loop

NOMBRE = Range("B" & fila).Value

APELLIDOP = Range("C" & fila).Value

APELLIDOM = Range("D" & fila).Value

EDAD = Range("E" & fila).Value

LOCALIDAD = Range("F" & fila).Value

COMUNIDAD = Range("G" & fila).Value

TELEFONO = Range("H" & fila).Value

GRUPO = Range("I" & fila).Value

TURNO = Range("J" & fila).Value

'

Page 13: Formularios en Excel

End Sub

'ACTUALIZACION DEL ComboBox1

Private Sub NUMERO_Enter()

Dim x As Integer

Application.ScreenUpdating = False

Hoja2.Select

'Borro el contenido del combobox

Me.NUMERO.Clear

For x = 2 To Range("A" & Rows.Count).End(xlUp).Row

If Cells(x, 1) <> Empty Then NUMERO.AddItem Range("A" & x).Value

Next

Macro1

End Sub

BAJAS

Option Explicit

Page 14: Formularios en Excel

'BUSCA EL MODELO PARA ELIMINAR

Private Sub CommandButton1_Click()

Dim NUMEROS As String

Dim idBusca As String

Dim fila As Integer

Application.ScreenUpdating = False

Sheets("ALUMNOS").Select

fila = 1

NUMEROS = NUMERO

Do While idBusca <> NUMEROS

fila = fila + 1

idBusca = Range("A" & fila).Value

Loop

If MsgBox("¿SEGURO QUE QUIERE ELIMINAR ESTE VEHICULO?", vbExclamation + vbYesNo) = _

vbYes Then

'se selecciona la celda

Range("A" & fila).Select

'se borra toda la fila

Selection.EntireRow.Delete

End If

'se elimina el contenido del texto del ComboBox1

Me.NUMERO.Text = ""

Page 15: Formularios en Excel

Hoja1.Activate

End Sub

Private Sub CommandButton2_Click()

Me.Hide

End Sub

'ACTUALIZACION DEL ComboBox1

Private Sub NUMERO_Enter()

'declaramos una variable que representa las filas

'del listado que hay en la hoja 2

Dim x As Integer

Application.ScreenUpdating = False

'selección de la hoja 2

Hoja2.Select

'se limpia el ComboBox1

Me.NUMERO.Clear

'entramos en un ciclo FOR que recorre las filas de la columna A

'empezando por la fila 2 hasta la última que tiene datos

For x = 2 To Range("A" & Rows.Count).End(xlUp).Row

'tiene en cuenta si hubiera una fila vacía (no es nuestro caso)

'y luego se agrega un ítem

Page 16: Formularios en Excel

If Cells(x, 1) <> Empty Then NUMERO.AddItem Range("A" & x).Value

Next

Hoja1.Select

End Sub

MODIFICAR

Option Explicit

'MODIFICA DATOS

Private Sub CommandButton2_Click()

Page 17: Formularios en Excel

Dim NUMEROS As String

Dim idBusca As String

Dim fila As Integer

Application.ScreenUpdating = False

Sheets("ALUMNOS").Select

fila = 1

NUMEROS = NUMERO

'se busca la fila para modificar uno o varios ítems

'según el elemento del ComboBox1 que se selecciono

Do While idBusca <> NUMEROS

fila = fila + 1

idBusca = Range("A" & fila).Value

Loop

If MsgBox("¿SEGURO QUE HIZO TODOS LOS CAMBIOS AL VEHICULO?", vbExclamation + vbYesNo) = _

vbYes Then

'se modifica algún dato de la fila hallada cuando se sale del ciclo

Range("B" & fila).Value = NOMBRE

Range("C" & fila).Value = APELLIDOP

Range("D" & fila).Value = APELLIDOM

Range("E" & fila).Value = EDAD

Range("F" & fila).Value = LOCALIDAD

Range("G" & fila).Value = COMUNIDAD

Page 18: Formularios en Excel

Range("H" & fila).Value = TELEFONO

Range("I" & fila).Value = GRUPO

Range("J" & fila).Value = TURNO

End If

'se vacian los ComboBox1 y TexTbox

NUMERO = ""

NOMBRE = ""

APELLIDOP = ""

APELLIDOM = ""

EDAD = ""

LOCALIDAD = ""

COMUNIDAD = ""

TELEFONO = ""

GRUPO = ""

TURNO = ""

Hoja1.Select

Range("B4").Select

End Sub

'INFORMA

Private Sub NUMERO_Change()

Page 19: Formularios en Excel

Dim NUMEROS As String

Dim idBusca As String

Dim fila As Integer

Application.ScreenUpdating = False

Sheets("ALUMNOS").Select

Range("A2").Select

fila = 1

NUMEROS = NUMERO

Do While idBusca <> NUMEROS

fila = fila + 1

idBusca = Range("A" & fila).Value

Loop

NOMBRE = Range("B" & fila).Value

APELLIDOP = Range("C" & fila).Value

APELLIDOM = Range("D" & fila).Value

EDAD = Range("E" & fila).Value

LOCALIDAD = Range("F" & fila).Value

COMUNIDAD = Range("G" & fila).Value

TELEFONO = Range("H" & fila).Value

GRUPO = Range("I" & fila).Value

Page 20: Formularios en Excel

TURNO = Range("J" & fila).Value

End Sub

Private Sub CommandButton1_Click()

Hoja1.Select

Range("B4").Select

Me.Hide

End Sub

End Sub

'CARGA Y ACTUALIZA EL COMBOBOX

Private Sub NUMERO_Enter()

Dim x As Integer

Application.ScreenUpdating = False

Hoja2.Select

Me.NUMERO.Clear

For x = 2 To Range("A" & Rows.Count).End(xlUp).Row

If Cells(x, 1) <> Empty Then NUMERO.AddItem Range("A" & x).Value

Next

Page 21: Formularios en Excel

End Sub

Private Sub UserForm_Initialize()

Dim A2 As Range

Dim B2 As Range

Dim C2 As Range

Application.ScreenUpdating = False

Hoja3.Select

Range("A2").Select

While ActiveCell <> ""

LOCALIDAD.AddItem ActiveCell

ActiveCell.Offset(1, 0).Select

Wend

Macro2

Hoja1.Select

Range("E9").Select

Hoja3.Select

Range("B2").Select

While ActiveCell <> ""

GRUPO.AddItem ActiveCell

ActiveCell.Offset(1, 0).Select

Page 22: Formularios en Excel

Wend

Hoja1.Select

Range("F9").Select

Hoja3.Select

Range("C2").Select

While ActiveCell <> ""

TURNO.AddItem ActiveCell

ActiveCell.Offset(1, 0).Select

Wend

Hoja1.Select

Range("G9").Select

End Sub

Hoja1

Page 23: Formularios en Excel

ALUMNOS

EXTRAS

Page 24: Formularios en Excel