Leah quisiera un botón flotante con una macro asignada. Entonces, cuando se mueve hacia la izquierda, derecha, arriba o abajo, el botón permanece cerca de la celda en la que está trabajando. Leah se pregunta si hay alguna forma de agregar un botón de este tipo en Excel.

No hay forma de hacer esto sin usar una macro para controlar la ubicación del botón. (Esto no debería ser un gran problema, ya que ya está utilizando al menos una macro en el libro de trabajo, la que activa el botón flotante).

Antes de entrar en los detalles de cómo hacer esto, querrá considerar si realmente desea utilizar este enfoque. Por ejemplo, puede asignar su macro a una tecla de acceso directo oa un botón en la barra de herramientas de acceso rápido. Cualquiera de los dos enfoques eliminaría la necesidad de reposicionar constantemente su botón flotante.

Si definitivamente desea seguir la ruta del botón, continúe y cree su botón en pantalla y vincúlelo a su macro. Luego, simplemente cree un controlador de eventos que reposicione el botón cada vez que cambie la celda seleccionada. Por ejemplo, supongamos que el nombre de su botón es «Botón 1». En ese caso, podría utilizar la siguiente macro:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With ActiveSheet.Shapes("Button 1")

.Top = Target.Offset(1).Top         .Left = Target.Offset(, 1).Left     End With End Sub

Recuerde que este es un controlador de eventos, por lo que debe colocarse en la ventana de código de la hoja de trabajo a la que se aplica. El resultado es que el botón se mueve para estar siempre cerca de la esquina inferior derecha de la celda seleccionada.

También debe tenerse en cuenta que hay dos formas de crear un botón de macro: como un control Active X o como un control heredado no Active X. El enfoque anterior funciona muy bien si está utilizando el tipo de botón heredado. Sin embargo, si está usando un control Active X, entonces querrá cambiar la macro solo un poco:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With ActiveSheet.OLEObjects("CommandButton1")

.Top = Target.Offset(1).Top         .Left = Target.Offset(, 1).Left     End With End Sub

Tenga en cuenta que el único cambio está en el objeto al que se hace referencia. Con el controlador de eventos apropiado en su lugar, siempre que cambie la celda seleccionada en la pantalla, el botón se reposiciona para estar justo en la parte inferior derecha de la celda seleccionada. Por lo tanto, no es un verdadero «flotante»

botón que flota en el mismo lugar todo el tiempo. Esto debería estar bien en la situación de Leah, ya que ella quería que el botón estuviera cerca de la celda en la que está trabajando (la celda seleccionada), no la celda que está viendo (como cuando se desplaza usando las barras de desplazamiento).

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (13544) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.