Controles ActiveX en Excel

Los controles ActiveX son un tipo de controles que nos permiten agregar funcionalidad de formularios a nuestros libros de Excel. Existe otro tipo de controles que es conocido como Controles de formulario y que tienen una funcionalidad similar, sin embargo existen algunas diferencias entre ambos tipos.

Controles ActiveX y controles de formulario

Los controles de formulario fueron introducidos desde la versión 4 de Excel y por lo tanto han estado presentes en la aplicación por más tiempo que los controles ActiveX los cuales comenzaron a ser utilizados a partir de Excel 97. Ya que los controles ActiveX fueron introducidos posteriormente ofrecen más posibilidades de configuración y formato que los controles de formulario.  Ambos tipos de controles se encuentran en la ficha Programador.

Controles ActiveX en Excel 2010

La diferencia más significativa entre ambos es la manera en como podemos obtener información de los controles al momento de interactuar con el usuario. Los controles de formulario solamente responderán después de que el usuario ha interactuado con ellos, como después de haber pulsado el botón. Por el contrario, los controles ActiveX responden de manera continua a las acciones del usuario lo cual nos permite realizar acciones como cambiar el tipo de puntero del mouse que se muestra al colocar el puntero del ratón sobre el botón.

Propiedades de los controles ActiveX

A diferencia de los controles de formulario, los controles ActiveX tienen una serie de propiedades que podemos configurar pulsando el botón Propiedades que se encuentra dentro del grupo Controles de la ficha Programador.

Propiedades de un control ActiveX en Excel

Antes de poder ver las propiedades de un control ActiveX debemos pulsar el botón Modo Diseño el cual nos permitirá seleccionar el control y posteriormente ver sus propiedades. Cada tipo de control ActiveX mostrará una ventana de Propiedades con sus propias características. A continuación un ejemplo de la ventana Propiedades para un botón de comando ActiveX:

Propiedades de un botón ActiveX en Excel

Controles ActiveX con subrutinas VBA

Otra diferencia entre los controles de formulario y los controles ActiveX es que los primeros pueden tener asignada una macro y al hacer clic sobre el control de formulario se iniciará la ejecución de dicha macro.

Los controles ActiveX no tienen asignada una macro explícitamente sino que podemos asignar código VBA para cada evento del control. Un evento de un control ActiveX puede ser el evento de hacer clic sobre el control, el evento de hacer doble clic, el evento de obtener el foco sobre el control ActiveX, entre otros eventos más. Para asignar código a uno de los eventos de un control ActiveX solamente debemos hacer clic derecho sobre él y seleccionar la opción Ver código.

Ver código de un control ActiveX en Excel

Esto mostrará el Editor de Visual Basic con una subrutina para el evento Click() donde podremos escribir nuestro código.

Subrutina VBA para el evento Click de un control ActiveX

En la lista desplegable de la derecha podemos observar la lista de eventos disponibles para nuestro control ActiveX y para los cuales podemos escribir código VBA. Al seleccionar cualquiera de dichos eventos se insertará una nueva subrutina que podremos utilizar. Son precisamente la gran cantidad de eventos disponibles para los controles ActiveX lo que los hace controles muy poderosos que podemos utilizar en nuestros formularios.

Otra ventaja de los controles ActiveX en Excel

En la versión de Excel 2010 algunos controles de formulario han dejado de ser soportados y no podemos utilizarlos más en nuestras hojas. Ese es el caso del control de formulario conocido como campo de texto. Sin embargo, dentro de la lista de controles ActiveX seguimos teniendo disponible el control llamado Cuadro de texto lo cual puede hacer atractiva la opción de utilizar controles ActiveX en Excel en lugar de controles de formulario.

Artículos relacionados
Controles de formulario en Excel
Formularios en Excel

11 comentarios en “Controles ActiveX en Excel

  1. Moises

    Buen día, antes que nada una felicitación por tu página, en verdad nos hace la vida más sencilla a muchos de nosotros. Tengo una duda, cuando yo creo mi formulario en VBA, aplico todos los comando a todos los botones, a los cuadros de texto y le doy las ordenes para que hagan lo que les indico. ¿Cuál es el código o los pasos que tengo que seguir para que mi formulario se muestre en mi hoja de excel mediante un botón?
    Gracias

    1. Moisés Ortíz Autor

      Hola Moises! Si el formulario se llama UserForm1, entonces dentro del botón (ActiveX) debes colocar la instrucción UserForm1.Show y eso mostrará el formulario.

  2. alberto

    Muy buenas. Tengo una pequeña duda, quiero bloquear un cuadro de texto. Como lo hago exactamente? Tengo bloqueada la hoja entera incluso permitido el acceso en algunas celdas que quiero que se pueda escribir sobre ellas. Pero en cuanto al cuadro de texto nada no hay manera se puede modificar y desplazar por completo incluso suprimierlo un saludo y muchas gracias

    1. Moisés Ortíz Autor

      Hola Alberto, los cuadros de texto solo se pueden desplazar o suprimir cuando estás en el Modo Diseño así que no me queda muy clara esa parte de la pregunta. ¿Quieres impedir que alguien tenga acceso al Modo Diseño?
      Por otro lado, si quieres bloquear el contenido de un TextBox (ActiveX) puedes utilizar la siguiente instrucción VBA:
      TextBox1.Enabled = False

  3. Evert

    Buenas noches al crear los comandbutton y agregarles sub rutinas luego se bloquea y no me permite borrarlos ni modificar sus propiedades… como puedo hacer para borrarlo?

    1. Moisés Ortíz Autor

      Hola Evert, para poder eliminar un control debes asegurarte de pulsar el botón “Modo diseño” que se encuentra dentro de la ficha Programador. Eso te permitirá seleccionar el botón y eliminarlo.

  4. hilda

    Hola Moisés, fíjate que hice un formato con controles activex y utilize cuadro de texto, pero al escribir no me deja dar enter y me escribe de corrido….. como le hago? gracias

    1. Moisés Ortíz Autor

      Hola Hila, dentro de las propiedades del TextBox modifica la el valor para EnterKeyBehavior el cual generalmente está en False pero si lo colocas en True podrás ingresar saltos de línea.

  5. Marco Bautista

    Felicidades al creador de está página, la verdad es que es de gran utilidad. Soy nuevo en esto, pero le he buscado y me las he ingeniado para hallarle. Tengo el siguiente problema: Al ejecutar un botón de comando, me abre un formulario, y hasta ahí todo esta bien. Lo que necesito es que con el mismo botón de comando pueda ejecutar una macro antes de que me abra el formulario. La macro crea una carpeta, y el formulario es para guardar el archivo en esa carpeta. Espero me puedan ayudar.

    1. Moisés Ortíz Autor

      Hola Marco, lo único que debes haces es llamar la maro (por su nombre) justo antes del comando Form.Show

  6. Lorhy

    ESTAN GENIALES TUS EXPLICACIONES !!!! GRACIAS