Como Llamar y usar el selector de color con VBA
Al crear herramientas y aplicaciones basadas en Excel, suele resultar útil que el usuario seleccione un color. Si bien es posible crear un formulario de usuario personalizado, Colorwindow nativo de Excel es más que adecuado para la mayoría de circunstancias.
Selector de color nativo de Excel:
Para mostrar la ventana Color, podría pensar que podríamos usar la Grabadora de macros, pero no nos brinda lo que necesitamos. El código grabado mostrará los colores seleccionados, pero no la acción de mostrar la ventana Colores.
Código de macro grabado: el selector de color no se mostrará:
Con Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 3166746 .TintAndShade = 0 .PatternTintAndShade = 0 Terminar con
Esta publicación proporciona el código VBA necesario para llamar a la ventana Colores y aplicar la selección del usuario.
Uso del cuadro de diálogo Editar color
El código VBA para llamar a la ventana Color es sencillo.
Cada ventana en Excel tiene su propia configuración de diálogo a la que se puede llamar. Al escribir Application.Dialogs( en el Editor de Visual Basic se mostrará la lista de cuadros de diálogo disponibles.
Se puede llamar a cualquiera de estas ventanas. El siguiente código abrirá la ventana del Administrador de complementos.
Aplicación.Dialogs(xlDialogAddinManager).Mostrar
Para llamar a la ventana de color haríamos referencia a xlDialogEditColor en lugar de xlDialogAddinManager.
La opción xlDialogEditColor requiere un argumento. Hay 56 posiciones de color disponibles en Excel; al llamar a la ventana Color es necesario indicar qué posición de color se va a editar. El siguiente código muestra cómo editar la posición del duodécimo color.
Aplicación.Dialogs(xlDialogEditColor).Mostrar (12)
El uso de un número de posición superior a 56 generará un error:
Ejemplo completo de VBA
El siguiente código, que debe usarse en un módulo estándar:
- Obtendrá el código de color de una celda con el rango con nombre de RGBColor
- Asignará el código de color a una variable llamada FullColorCode
- Muestre el cuadro de diálogo Editar color, estableciendo el valor predeterminado en los valores de rojo, verde y azul anteriores
- La celda denominada RGBColor se actualiza con el nuevo código de color de la variable FullColorCode.
< li>Utilice fórmulas para dividir el código a todo color en sus componentes rojo, verde y azul
< li>Al hacer clic en Aceptar, el color seleccionado se asigna a la variable FullColorCode
Sub ColorDialog()'Crea variables para los códigos de colorDim FullColorCode As LongDim RGBRed As IntegerDim RGBGreen As IntegerDim RGBBlue As Integer'Obtiene el código de color de la celda nombrada" rgbcolor"fullcolorcode="Range(RGBColor).Interior.Color'Get" the="" rgb="" value="" for="" each="" color="" (possible="" values="" 0="" -="" 255)rgbred="FullColorCode" mod="" 256rgbgreen="(FullColorCode" 256)="" 256rgbblue="FullColorCode" 65536'open="" colorpicker="" dialog="" box,="" applying="" as="" defaultif="" application.dialogs(xldialogeditcolor).show="" _="" (1,="" rgbred,="" rgbgreen,="" rgbblue)="True" then="" 'set="" variable="" rgbcolorcode="" equal="" to="" 'selected="" dialogbox="" fullcolorcode="ActiveWorkbook.Colors(1)" of="" cell="" named="" "rgbcolor"="" range("rgbcolor").interior.color="FullColorCodeElse" 'do="" nothing="" if="" user="" selected="" cancelend="" ifend="" sub<="" pre="">Adaptando el código
El ejemplo anterior utiliza una celda de la hoja de trabajo para contener el color. Es posible adaptar esta técnica con cualquier objeto con una propiedad .Color. Esto no se limita sólo a las hojas de trabajo, sino a muchos, muchos objetos dentro del modelo de objetos de VBA.
Deja una respuesta