Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se incluye información específica sobre la utilización de controles ActiveX en hojas de cálculo y en hojas de gráficos. Para obtener información general sobre cómo agregar y trabajar con controles, vea Usar controles ActiveX en un documento y Crear un cuadro de diálogo personalizado.
Tenga en cuenta los siguientes puntos cuando utilice controles en las hojas de cálculo:
Además de las propiedades estándar disponibles para los controles ActiveX, se pueden usar las siguientes propiedades con controles ActiveX en Microsoft Excel: BottomRightCell, LinkedCell, ListFillRange, Placement, PrintObject, TopLeftCell y ZOrder.
Estas propiedades pueden establecerse y devolverse usando el nombre del control ActiveX. En el siguiente ejemplo se desplaza la ventana del libro de manera que CommandButton1 esté en la esquina superior derecha.
Set t = Sheet1.CommandButton1.TopLeftCell With ActiveWindow .ScrollRow = t.Row .ScrollColumn = t.Column End With
Algunos métodos y propiedades de Visual Basic de Microsoft Excel se deshabilitan cuando se activa un control ActiveX. Por ejemplo, el método Sort no puede usarse mientras esté activo un control, por lo que el código que se muestra a continuación origina un error en un procedimiento de evento clic de botón, ya que el control sigue activo después de que el usuario haga clic.
Private Sub CommandButton1.Click Range("a1:a10").Sort Key1:=Range("a1") End Sub
Este problema puede evitarse si se activa otro elemento en la hoja antes de usar el método o la propiedad que originó un error. Por ejemplo, el código siguiente ordena el rango:
Private Sub CommandButton1.Click Range("a1").Activate Range("a1:a10").Sort Key1:=Range("a1") CommandButton1.Activate End Sub
Los controles creados en un libro de Microsoft Excel que esté incrustado en un documento de otra aplicación no funcionarán si el usuario hace doble clic en el libro para modificarlo. Los controles funcionarán, sin embargo, si el usuario hace clic con el botón secundario y selecciona el comando Abrir desde el menú contextual.
Si se guarda un libro de Microsoft Excel usando el formato de archivo de libro Microsoft Excel 5.0/95, se perderá la información sobre el control ActiveX.
La palabra clave Me de un procedimiento de evento de un control ActiveX de una hoja hace referencia a la hoja, no al control.
Agregar controles con Visual Basic
En Microsoft Excel, los controles ActiveX se representan mediante objetos OLEObject en la colección OLEObjects; todos los objetos OLEObject forman parte también de la colección Shapes. Para agregar automáticamente un control ActiveX a una hoja, utilice el método Add de la colección OLEObjects. En el ejemplo siguiente se agrega un botón de comando a la hoja de cálculo 1.
Worksheets(1).OLEObjects.Add "Forms.CommandButton.1", _
Left:=10, Top:=10, Height:=20, Width:=100
Uso de propiedades de control con Visual Basic
Con mucha frecuencia, el código de Visual Basic hará referencia a los controles ActiveX por sus nombres. El ejemplo siguiente cambia el título del control denominado "CommandButton1."
Sheet1.CommandButton1.Caption = "Run"
Tenga en cuenta que, al utilizar un nombre de control externo fuera del módulo de clase de la hoja que contiene el control, debe asignar el nombre de la hoja al nombre del control.
Para cambiar el nombre del control utilizado en código de Visual Basic, seleccione el control y configure la propiedad (Name) en la ventana Propiedades.
Como los controles ActiveX también se representan mediante objetos OLEObject de la colección OLEObjects, puede configurar propiedades de control si utiliza los objetos de la colección. El ejemplo siguiente establece la posición izquierda del control "CommandButton1".
Worksheets(1).OLEObjects("CommandButton1").Left = 10
Las propiedades del control que no se muestran como propiedades del objeto OLEObject pueden establecerse si se devuelve el objeto de control real mediante la propiedad Object. El ejemplo siguiente establece el título de CommandButton1.
Worksheets(1).OLEObjects("CommandButton1"). _
Object.Caption = "run me"
Como todos los objetos OLE también forman parte de la colección Shapes, puede utilizar esta colección para establecer las propiedades de varios controles. El ejemplo siguiente alinea el borde izquierdo de todos los controles de la hoja de cálculo 1.
For Each s In Worksheets(1).Shapes
If s.Type = msoOLEControlObject Then s.Left = 10
Next
Utilizar nombres de controles con las formas y colecciones OLEObjects
Un control ActiveX de una hoja tiene dos nombres: el nombre de la forma que contiene el control, visible en el cuadro Nombre al ver la hoja, y el nombre en código del control, presente en la celda a la izquierda de (Nombre) en la ventana Propiedades. La primera vez que agrega un control a una hoja, el nombre de la forma y el nombre de código son iguales. Sin embargo, si modifica uno de los nombres, el otro no cambiará automáticamente para coincidir con el que se modificó.
El nombre de código de un control se utiliza en los nombres de sus procedimientos de eventos. Sin embargo, cuando devuelve un control de la colección Shapes u OLEObjects para una hoja, debe usar el nombre de la forma no el nombre de código para hacer referencia al control mediante su nombre. Por ejemplo, suponga que agrega una casilla de verificación a una hoja y que tanto el nombre predeterminado de la forma como el de código son CheckBox1. Si, a continuación, cambia el nombre en código de control escribiendo chkFinished junto a (Nombre) en la ventana Propiedades, deberá usar chkFinished en los nombres de procedimientos de eventos, pero tendrá que seguir usando CheckBox1 para devolver el control de las colecciones Shapes o OLEObject, como se muestra en el ejemplo siguiente.
Private Sub chkFinished_Click()
ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1
End Sub
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.