Rob tiene un cuadro de texto, en una hoja de trabajo, que contiene texto copiado de Word.

Quiere saber cómo puede cambiar el tamaño del cuadro de texto usando una macro, de modo que cubra un rango específico de celdas.

Hay un par de formas de abordar esta tarea. Una es especificar, en la macro, exactamente qué celdas desea cubrir con el cuadro de texto y luego ajustar las propiedades del cuadro de texto para que coincidan con las características de las celdas que especifique.

Sub ResizeBox1()

Dim sTL As String     Dim sBR As String     Dim rng As Range

' Change top-left and bottom-right addresses as desired     sTL = "A1"

sBR = "M40"



' Ensure a text box is selected     If TypeName(Selection) <> "TextBox" Then         MsgBox "Text box not selected"

Exit Sub     End If

With Selection         Set rng = ActiveSheet.Range(sTL)

.Top = rng.Top         .Left = rng.Left         Set rng = ActiveSheet.Range(sBR)

.Width = rng.Left + rng.Width         .Height = rng.Top + rng.Height     End With     Set rng = Nothing End Sub

Para usar la macro, cambie la dirección de las celdas que desea usar para la parte superior izquierda e inferior derecha del cuadro de texto. Luego, seleccione el cuadro de texto y ejecute la macro.

Si lo prefiere, puede usar un rango con nombre para especificar el rango que debe cubrir el cuadro de texto. La siguiente macro espera que el rango se denomine RangeToCover. Cuando selecciona el cuadro de texto y ejecuta la macro, el cuadro de texto cambia de tamaño para que coincida con el tamaño del rango.

Sub ResizeBox2()

Dim l_rRangeToCover As Range     Dim l_rLowerRight As Range

' Ensure a text box is selected     If TypeName(Selection) <> "TextBox" Then         MsgBox "Text box not selected"

Exit Sub     End If

' Get the range to cover     Set l_rRangeToCover = _       ActiveSheet.Range(Names("RangeToCover").RefersToRange.Value)



' Get its lower right cell     Set l_rLowerRight = _       l_rRangeToCover.Cells( _       l_rRangeToCover.Rows.Count, _       l_rRangeToCover.Columns.Count)



' Resize the text box     With Selection         .Left = l_rRangeToCover.Left         .Top = l_rRangeToCover.Top         .Width = l_rLowerRight.Left + l_rLowerRight.Width - .Left         .Height = l_rLowerRight.Top + l_rLowerRight.Height - .Top     End With End Sub

_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 (10185) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Resizing_a_Text_Box_in_a_Macro [Cambiar el tamaño de un cuadro de texto en una macro].