Cómo agregar cuadros de diálogo a las macros de Excel con Visual Basic Editor

  1. Software
  2. Oficina de Microsoft
  3. Excel
  4. Cómo agregar cuadros de diálogo a las macros de Excel con Visual Basic Editor

Libro Relacionado

Por Greg Harvey

Puede utilizar la función InputBox para añadir cuadros de diálogo a las macros de Excel 2013. Cuando ejecuta la macro, esta función de Visual Basic hace que Excel muestre una ventana de diálogo de entrada en la que puede introducir cualquier título que tenga sentido para la nueva hoja de trabajo. La macro entonces pone ese texto en la celda actual y formatea este texto, si eso es lo que ha entrenado a su macro a hacer a continuación.

Para ver lo fácil que es utilizar la función InputBox para añadir interactividad a una macro que de otro modo sería estable, siga los pasos para convertir la macro Company_Name que actualmente introduce el texto “Mind Over Media” en una que le pida el nombre que desea introducir. La función InputBox utiliza la siguiente sintaxis:

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

En esta función, sólo se requiere el argumento prompt, siendo el resto de los argumentos opcionales. El argumento prompt especifica el mensaje que aparece dentro de la caja de diálogo Input, pidiendo al usuario que introduzca un nuevo valor (o en este caso, un nuevo nombre de la empresa).

El argumento prompt puede tener un máximo de 1.024 caracteres. Si desea que el mensaje de aviso aparezca en líneas diferentes dentro de la ventana de diálogo, introduzca las funciones Chr(13) y Chr(10) en el texto (para insertar un retorno de carro y un salto de línea en el mensaje, respectivamente).

El argumento opcional title especifica el texto que se mostrará en la barra de título del cuadro de diálogo Input. Si no especifica un argumento de título, Excel muestra el nombre de la aplicación en la barra de título. El argumento opcional predeterminado especifica la respuesta predeterminada que aparece automáticamente en el cuadro de texto en la parte inferior del cuadro de diálogo de entrada.

Si no especifica un argumento predeterminado, el cuadro de texto estará vacío en el cuadro de diálogo de entrada.

Los argumentos opcionales xpos e ypos especifican la distancia horizontal desde el borde izquierdo de la pantalla hasta el borde izquierdo del cuadro de diálogo y la distancia vertical desde el borde superior de la pantalla hasta el borde superior del cuadro de diálogo. Si no especifica estos argumentos, Excel centra el cuadro de diálogo de entrada horizontalmente y lo posiciona aproximadamente un tercio de la pantalla verticalmente.

Los argumentos opcionales de archivo de ayuda y contexto especifican el nombre del archivo de ayuda personalizado que usted pone a disposición del usuario para explicar el funcionamiento del cuadro de diálogo de entrada, así como el tipo de datos que acepta.

Como parte del proceso de creación de un archivo de ayuda personalizado para su uso en el sistema de ayuda de Excel, se asigna al tema un número de contexto apropiado para su contenido, que luego se especifica como argumento de contexto para la función InputBox.

Al especificar un archivo de ayuda y un argumento de contexto para esta función, Excel añade un botón de ayuda al cuadro de diálogo de entrada personalizado en el que los usuarios pueden hacer clic para acceder al archivo de ayuda personalizado en la ventana de ayuda.

Antes de que pueda agregar la línea de código a la macro con la función InputBox, necesita encontrar el lugar en los comandos de Visual Basic donde debe ir la línea. Para introducir el texto Mind Over Media en la celda activa, la macro Company_Name utiliza el siguiente comando de Visual Basic:

ActiveCell.FormulaR1C1 = "La mente sobre los medios"

Para añadir interactividad a la macro, necesita insertar la función InputBox en una línea de la ventana Código justo encima de esta sentencia ActiveCell.FormulaR1C1, como se indica a continuación:

  1. Coloque el punto de inserción en la ventana Código al principio de la sentencia ActiveCell.FormulaR1C1 y pulse Intro para insertar una nueva línea.
  2. Pulse la tecla de flecha arriba para posicionar el punto de inserción al principio de la nueva línea, en la que desea crear una variable que proporcione el argumento prompt a la función InputBox. Para ello, se debe indicar el nombre de la variable (InputMsg en este caso) seguido de su entrada actual. Asegúrese de incluir el texto del mensaje en el lado derecho del signo igual entre comillas dobles cerradas.
  3. Escriba el siguiente código para crear la variable InputMsg en la línea 8 y luego presione la tecla Enter para iniciar una nueva línea 9:InputMsg = “Ingrese el nombre de la compañía o el título de esta hoja de trabajo en el cuadro de texto de abajo y luego haga clic en Aceptar:”A continuación, cree una variable llamada InputTitle que proporcione el argumento de título opcional para la función InputBox. Esta variable hace que el texto “Spreadsheet Title” aparezca como título del cuadro de diálogo Input. Una vez más, asegúrese de incluir entre comillas el nombre de la barra de título del cuadro de diálogo.
  4. Escriba el siguiente código para crear la variable InputTitle en la línea 9 y luego pulse Enter para insertar una nueva línea 10:InputTitle = “Spreadsheet Title”A continuación, cree un nombre de variable DefaultText que proporcione el argumento opcional por defecto a la función InputBox. Esta variable hace que el texto “Mind Over Media” aparezca como la entrada predeterminada en el cuadro de texto de la parte inferior del cuadro de diálogo de entrada de nombre de empresa personalizado.
  5. Escriba el siguiente código para crear la variable DefaultText en la línea 10 y luego presione Enter para insertar una nueva línea 11:DefaultText = “Mind Over Media”A continuación, cree una variable final llamada CompanyName que especifica la función InputBox como su entrada (usando las variables InputMsg, InputTitle y DefaultText que acaba de crear) y almacena los resultados de esta función.
  6. Escriba el siguiente código para crear la variable SpreadsheetTitle que utiliza la función InputBox en la línea 11:SpreadsheetTitle = InputBox(InputMsg, InputTitle, DefaultText)Finalmente, reemplace el valor, “Mind Over Media”, en la propiedad ActiveCell.FormulaR1C1C1 con la variable SpreadsheetTitle (cuyo valor está determinado por lo que se introduzca en el cuadro de diálogo de entrada de título de la hoja de cálculo), reemplazando de forma efectiva esta constante en la macro con el medio para realizar esta entrada
  7. Seleccione “Mind Over Media” en la línea 12 y sustitúyalo por SpreadsheetTitle (sin comillas).
  8. Guarde la macro editada haciendo clic en el botón Guardar de la barra de herramientas de Visual Basic y luego vuelva a la hoja de trabajo haciendo clic en el botón Ver Microsoft Excel o pulsando Alt+F11. A continuación, haga clic en el botón Ocultar en el grupo Ventana de la pestaña VER Ahora, está listo para abrir un nuevo libro de trabajo y ejecutar la macro editada pulsando Ctrl+N.

La figura muestra la ventana Código con la macro Company_Name editada después de añadir las sentencias que la hacen interactiva.

La siguiente figura muestra el cuadro de diálogo Título de la hoja de cálculo en acción en la hoja de trabajo. Esta ventana de diálogo de entrada aparecerá automáticamente y le pedirá que introduzca datos cada vez que ejecute la versión editada y ahora completamente interactiva de la macro Nombre_de_la_empresa.

Para seguir adelante e introducir Mind Over Media en la celda actual y luego formatearla usando el resto de los comandos de las macros, simplemente haga clic en Aceptar en este cuadro de diálogo personalizado. Para introducir y formatear el nombre de otra empresa, simplemente escriba el nombre de la empresa (que reemplaza automáticamente a Mind Over Media en el cuadro de texto) antes de hacer clic en Aceptar.

Leave a Reply