miércoles, 1 de febrero de 2017

Formularios en vbasic para excel.

Un formulario es un documento, ya sea físico o digital, diseñado para que el usuario introduzca datos estructurados (nombres, apellidos, dirección, etc.) en las zonas correspondientes, para ser almacenados y procesados posteriormente. Esto ayuda a que diferentes instancias, registren datos personales de la persona que los llena para posteriormente ser acreedor al servicio solicitado, siempre y cuando, los datos sean llenados correctamente.
En informática, un formulario consta de un conjunto de Campos de datos solicitados por un determinado programa, los cuales se almacenarán para su procesamiento y posterior uso. Cada campo debe albergar un dato específico, por ejemplo, el campo "Nombre" debe rellenarse con un nombre personal; el campo "Fecha de nacimiento" debe aceptar una fecha válida, etc.

En vbasic para excel

 Formulario Un formulario es una ventana del sistema operativo Windows. Este formulario es la interfase gráfica de su aplicación, sobre el que podrá añadir los controles que necesite su programa. Podemos abrir tantas ventanas como queramos en nuestro proyecto, pero el nombre de cada una de ellas debe ser distinto. Por defecto la ventana que se abre en un proyecto Visual Basic tiene el nombre de Form1.

Evento Un evento es una acción que sucede en un objeto, decimos también que es un proceso que ocurre en un momento no determinado causando una respuesta por parte de un objeto. Los objetos están atentos a cualquier evento que ocurra en u entorno o dentro de ellos mismos. Un programa Visual Basic es un POE (Programa orientado a eventos). Es decir, cuando se mueve el mouse por la pantalla, se escribe algún texto, etc.; nuestro programa está atento a que algún evento ocurra, en qué objeto ocurre y que acción debe tomar (programa)

  • Es un objeto que contiene objetos.
  • Como todo objeto tiene propiedades.
  • Como todo objeto puede verse sometido a eventos.
Un formulario es un contenedor de objetos (controles). 
Propiedades que yo particularmente he utilizado mas en un formulario.
  • Caption : Es el titulo que queremos que aparezca cuando se presente el formulario. Normalmente se fija en el momento de crear el formulario aunque se puede modificar por programa.

  • Height y width: Alto y ancho. Normalmente se fijan en el momento de crear el formulario. Se puede modificar por programa.
  • Name: Nombre del formulario. Se fija en el momento de creación del formulario. Se puede modificar editando el formulario. Es el nombre con el que se llama al formulario en vbasic.
  • Hay varias propiedades mas, desde el color de fondo al tipo de letra que se pueden fijar en el momento de la creación o por programa.
Controles que se pueden incluir en un formulario:

  • Etiqueta (label): Es un literal, se suele utilizar para indicar que es cada campo. Se puede fijar durante la creación del formulario y variarlo por programa. 
  • Cuadro de texto (TextBox): Se utiliza para introducir textos. Se puede fijar durante su creación o por programa. 
  • Cuadros combinados (Combobox) : Se utilizan para seleccionar un  opción de una lista de opciones.  Ademas de las propiedades comunes ya indicadas para los controles aparece la propiedad RowSource, que es el rango donde están  los datos a desplegar.
  • Cuadros de lista (Listbox) : Se utilizan para seleccionar un  opción de una lista de opciones.  Ademas de las propiedades comunes ya indicadas para los controles aparece la propiedad RowSource, que es el rango donde están  los datos a desplegar.
  • Casilla o checkbox: Permite validar o no un determinado campo.
  • Botones de opción y marco: Permite seleccionar entre varias una sola opción. El marco no es necesario si solo hay un grupo de opciones. En caso de tener mas de un grupo de opciones un marco debe rodear a cada grupo.
Botones de opción rodeados por un marco, etiquetas, cuadro de texto y botones de comando

  • Botón de comando (CommandButton). Se suelen utilizar para opciones tales como "Aceptar" o "Cancelar". Emula un botón pulsable.
  • Barra de desplazamiento (scrollbar): Permite variar un valor, mediante el desplazamiento del botón incorporado en la barra, entre dos valores límites. Este incremento es un parámetro programable de estos controles.
  • Botón de número (SpinButton):Muy parecido a la barra de desplazamiento pero sin el botón desplazable central.
Propiedades comunes de los controles. Las mas comunes: 
  • Name: Nombre del control. Se fija durante el proceso de creación del formulario. Una vez fijado, en programación, se hace referencia al control con ese nombre.
  • Caption: Literal que leerá el usuario.
  • Visible: true o false. Indica si el control se ve o no.
  • Enabled: Con enabled=true el control se puede utilizar normalmente. Con enabled=false el control se ve pero no está operativo.
Formulario anterior con algunos controles con visible=false y el botón Iniciar con enabled=false 

  • Left, Top, Height y width, izquierda, arriba, alto y ancho. Se fijan durante la creación del formulario. Se pueden variar por programa.
  • Text: Texto incluido.
  • Value: Valor del control.
  • Hay varias propiedades comunes mas, desde el tipo de letra o al tipo de cursor que queremos que se vea al pasar el ratón sobre el control. 
Creando un formulario. Pueden verse varios controles ya añadidos, el cuadro de herramientas y la ventana de propiedades 

Crear y usar un formulario: Con Alt+F11 se puede entrar o ver las macros programadas. 

  • Vamos a insertar, insertamos userform.
  • El  cuadro de herramientas y la ventana de propiedades se activan o desactivan desde el menú ver. Si no los vemos, los activamos.
  • Dimensionamos el formulario bien con el ratón, bien entrando en las propiedades y modificando los valores de hight y/o width.
  • En propiedades buscamos name y ponemos, si no nos vale el nombre por omisión, un nombre adecuado a nuestro proyecto.
  • En propiedades buscamos caption y ponemos el titulo que deseemos tenga el formulario al desplegarse.
  • Vamos al cuadro de herramientas. Salvo los botones de opción ,que van agrupados, cada uno de los controles es independiente.
  • Incluimos los controles que necesitemos. Cada control tiene sus propiedades pero, como ya he dicho, muchas son comunes. Con hight, width, top y left o arrastrando y dimensionando con el ratón podemos situarlos en el formulario.
  • En nuestras macros debemos tener una que nos presente el formulario. Como ya he comentado el formulario y cada uno de los controles tiene un nombre, bien el que toma por omisión o bien el que le hayamos dado. 
  • Llamo a mi formulario de prueba Formulario. Incluyo un botón "Aceptar" y un botón "Cancelar". Llamo a uno, en name,  aceptar y al otro, en un alarde de imaginación, cancelar.
  • A partir de ese momento cada vez, en programación, que me refiera al formulario escribiré Formulario y cada vez que me refiera al botón aceptar escribiré Formulario.aceptar.
  • Antes de presentar el formulario podemos o debemos variar algunos parámetros de los controles. Podemos incluir algún valor inicial, dejar invisible o no operable algún control hasta que otro evento los haga visibles u operables.

Código:

Sub VerFormulario()
With Formulario 'Nombre del formulario
.MedT = False     'Botones de opción iniciamos los dos a false. Sin selección
.MedVal = False
.TPeriodo.Text = 60 ' Valor inicial de TPeriodo
.Aceptar.Enabled = False 'Aceptar se ve pero no está operativo.
.Periodo.Visible = False ' Las dos etiquetas y el cuadro de texto no aparecen, estan ocultas
.TPeriodo.Visible = False
.Segundos.Visible = False
.Show ' Muestra formulario

End With
End Sub




Acciones al cambiar o seleccionar un control. Acciones al producirse un evento sobre un control:

  • Desde el editor de formularios, con el formulario seleccionado, al hacer doble click sobre un control entramos en la macro que gestiona el evento mas común de ese control.
Código:
**************************************************

Private Sub MedT_Click()
With Formulario
.Aceptar.Enabled = True 'Aceptar hasta el momento no estaba operativo, no se había selecciona ninguna opción. Ya hay una opción, debe estar operativo.
.Periodo.Visible = True ' Los controles no visibles pasan a visibles para esta opción
.Segundos.Visible = True
.TPeriodo.Visible = True
End With

End Sub
*********************************************************************
Private Sub MedVal_Click()
With Formulario
.Aceptar.Enabled = True 'Aceptar hasta el momento no estaba operativo, no se había selecciona ninguna opción. Ya hay una opción, debe estar operativo.
' Estos controles  pasan a no visibles para esta opción
.Periodo.Visible = False
.Segundos.Visible = False
.TPeriodo.Visible = False
End With

End Sub
*********************************************************************
Private Sub Aceptar_Click()
Dim Cad, PE, PT, PV, Aux

Set Aux = Sheets("Aux")
Aux.Range("i3") = ""
With Formulario
.Hide 'Cierra el formulario
'Recupera los distintos valores del formulario, prepara lo que sea necesario y continua con el proceso.
PE = .TPeriodo.Value
PT = .MedT.Value
PV = .MedVal.Value
TF = PT
Aux.Range("k3") = PE
Aux.Range("j3") = "PT"
If PV Then
Aux.Range("k3") = ""
Aux.Range("j3") = "PV"
End If
End With

AbreRealterm0
Pausa
If Aux.Range("i3") = "" Then
'*****************************************
If PT Then
Cad = "PV0"
RT.PutString (Cad)
Pausa
Cad = "PE" & PE
RT.PutString (Cad)
Pausa
Cad = "PT1"
RT.PutString (Cad)
Pausa
End If
'*****************************************
If PV Then
Cad = "PT0"
RT.PutString (Cad)
Pausa
Cad = "PV1"
RT.PutString (Cad)
Pausa
End If
'*****************************************
TF = Now + 5 / 86400
'Prog = "AperturTextoComoExcel"
Prog = "LecturaComoTexto2"
Sheets("Medidas").UsedRange.Rows.Delete
Application.OnTime TF, Prog

End If


End Sub


Private Sub Cancelar_Click()
With Formulario
.Hide

End With

End Sub