Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. VBA Excel (versiones 2021 y Microsoft 365)
  3. Cuadros de diálogo
Extrait - VBA Excel (versiones 2021 y Microsoft 365) Programar en Excel: Macros y lenguaje VBA
Extractos del libro
VBA Excel (versiones 2021 y Microsoft 365) Programar en Excel: Macros y lenguaje VBA Volver a la página de compra del libro

Cuadros de diálogo

Presentación

El objetivo principal de los cuadros de diálogo es controlar el intercambio de información con el usuario: mostrar mensajes, pedir información, vista y entrada de datos, etc.

Existen tres tipos de cuadros de diálogo:

  • Los cuadros de diálogo llamados cuadros de diálogo integrados, que permiten, por ejemplo, abrir o guardar un archivo, definir las opciones de Excel, imprimir hojas de cálculo, ordenar datos, etc.

  • Los cuadros de diálogo predefinidos, que permiten mostrar un mensaje, hacer una pregunta al usuario o invitarlo a introducir una información.

  • Los cuadros de diálogo personalizados o formularios, que permiten mostrar o introducir datos en una interfaz amigable. La creación de formularios personalizados se explica en el capítulo siguiente.

Cuadros de diálogo integrados

1. El objeto Dialog

Los cuadros de diálogo integrados son objetos Dialog pertenecientes a la colección Dialogs del objeto Application.

Sintaxis

 Para mostrar un cuadro de diálogo, use el método Show según la siguiente sintaxis: Application.Dialogs(xlDialog).Show

donde xlDialog es una constante de Excel que indica el cuadro de diálogo que hay que mostrar.

Ejemplos de constantes xlDialog

Constante

Cuadro de diálogo

xlDialogBorder

Bordes

xlDialogFontProperties

Fuente

xlDialogDisplay

Opciones de visualización

xlDialogDefineName

Definir un nombre

xlDialogFormulaGoto

Ir a...

xlDialogOpenAbrir

Abrir

xlDialogSaveAs

Guardar como...

xlDialogSort

Ordenar

2. Los métodos GetOpenFileName y GetSaveAsFileName

Los métodos GetOpenFileName y GetSaveAsFileName del objeto Application muestran, respectivamente, los cuadros de diálogo Abrir y Guardar como... del menú Archivo.

A diferencia de los objetos Dialogs correspondientes (constantes xlOpen y xlSaveAs), estos métodos no realizan ninguna acción; solamente permiten recuperar el nombre del archivo introducido o seleccionado por el usuario.

Sintaxis del método GetOpenFileName

Application.GetOpenFileName(FileFilter, FilterIndex, Title, 
ButtonText, MultiSelect) 

Todos los argumentos son opcionales.

FileFilter

Criterios de filtrado: nombre del filtro seguido de la extensión. Por ejemplo: "PáginaWeb (*.htm;*.html) ,*.htm;*.html".

FileIndex

Índice del criterio de filtrado por defecto.

Title

Título del cuadro de diálogo.

ButtonText

Etiqueta del botón Abrir (solamente para Macintosh).

MultiSelect

Indica si el usuario puede seleccionar varios archivos.

Sintaxis...

Cuadros de diálogo predefinidos

1. La función InputBox

Muestra una pregunta (una solicitud de datos) y devuelve el texto escrito por el usuario.

InputBox(prompt,title,default,xpos,ypos,helpfile,context) 

prompt

Cadena que aparecerá como mensaje.

title

Cadena que aparecerá en la barra de título.

default

Valor tomado por defecto.

xpos

Posición horizontal del cuadro de diálogo (expresado en twips).

ypos

Posición vertical del cuadro de diálogo (expresado en twips).

helpfile

Nombre del archivo de ayuda contextual.

context

Número del contexto de ayuda.

Ejemplo

Este ejemplo muestra un cuadro de diálogo que pide el nombre de las celdas que hay que borrar (las celdas reciben el nombre de cada mes).

Sub Borrar_Celdas_Nombradas()  
  Dim sOpcion As String  
  '   Pide introducir el mes que hay que borrar  
  '   Si el mes se reconoce, borra las celdas con nombre  
  '   Si no, muestra un mensaje de error  
  sOpcion = InputBox( _   
          Prompt:="¿Qué mes desea borrar?", _  
          Title:="Borrar celdas")  
  On Error GoTo Err 
  Application.Goto reference:=sOpcion  
  Selection.Clear  
  Exit Sub 
 
Err: 
  MsgBox "No se puede borrar, nombre de celda inexistente"  
End Sub 

2. El método InputBox

Actúa como la función InputBox, pero permite controlar el tipo de datos que hay que introducir.

objeto.InputBox(prompt,title,default,left,top,helpfile, 
helpContextID,type) 

El objeto es obligatorio y debe ser un objeto Application.

prompt

Mensaje mostrado.

title

Título del cuadro de diálogo.

default

Valor tomado por defecto.

left

Posición horizontal del cuadro de diálogo (en puntos).

top

Posición vertical del cuadro de diálogo (en puntos).

helpfile

Nombre del archivo de ayuda en línea.

helpContextID

Número del contexto de ayuda.

type

Tipo de datos que se devolverá:

0: Fórmula

1: Número

2: Cadena

4: Valor Booleano

8: Referencia de celda

16: Valor de error

64: Matriz de valores en una selección de celdas.

Para aceptar varios tipos de datos, haga la suma de los valores. Por ejemplo...