Изменение размера текстового поля в макросе (Microsoft Excel)
У Роба есть текстовое поле на листе, содержащее текст, скопированный из Word.
Он хочет знать, как можно изменить размер текстового поля с помощью макроса, чтобы оно охватывало определенный диапазон ячеек.
Есть несколько способов подойти к этой задаче. Один из них — указать в макросе, какие именно ячейки вы хотите закрыть текстовым полем, а затем настроить свойства текстового поля в соответствии с характеристиками указанных вами ячеек.
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
Чтобы использовать макрос, измените адрес ячеек, которые вы хотите использовать, в верхнем левом и нижнем правом углу текстового поля. Затем выберите текстовое поле и запустите макрос.
При желании вы можете использовать именованный диапазон, чтобы указать диапазон, который будет охватывать текстовое поле. В следующем макросе предполагается, что диапазон будет называться RangeToCover. Когда вы выбираете текстовое поле и запускаете макрос, размер текстового поля изменяется в соответствии с размером диапазона.
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
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (3143) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:
link: / excelribbon-Resizing_a_Text_Box_in_a_Macro [Изменение размера текстового поля в макросе]
.