Como Llamar y usar el selector de color con VBA

Índice
  1. Uso del cuadro de diálogo Editar color
  2. Ejemplo completo de VBA
  3. Adaptando el código

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:

Estándar del selector de color Selector de color personalizado

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.

Selector de color: opciones del cuadro de diálogo

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:

Selector de color - Posición del color > 56″ fetchpriority=”low”></p>
<p>Es aceptable proporcionar el argumento de posición de color único, pero puede ser mejor establecer el valor de color predeterminado cuando se abre la ventana.</ p> </p>
<pre>Application.Dialogs(xlDialogEditColor).Show 1, 26, 82, 48</pre>
<p>El código anterior establece la posición de color 1 al color con valor RGB de</p>
<ul>
<li >Rojo: 26</li>
<li>Verde: 82</li>
<li>Azul: 48</li>
</ul>
<p>Ese color es verde oscuro (por si te lo preguntas). </p>
<p>La ventana Color tiene dos pestañas, Estándar y Personalizado (consulte las imágenes en la parte superior de este artículo).  Si el código de color RGB coincide con un color de la pestaña Estándar, se mostrará la pestaña Estándar; de lo contrario, se mostrará la pestaña Personalizado.</p>
<h2><span id=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
  • < li>Utilice fórmulas para dividir el código a todo color en sus componentes rojo, verde y azul

  • Muestre el cuadro de diálogo Editar color, estableciendo el valor predeterminado en los valores de rojo, verde y azul anteriores
  • < li>Al hacer clic en Aceptar, el color seleccionado se asigna a la variable FullColorCode

  • La celda denominada RGBColor se actualiza con el nuevo código de color de 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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...