Rob hat ein Textfeld in einem Arbeitsblatt, das aus Word kopierten Text enthält.

Er möchte wissen, wie er die Größe des Textfelds mithilfe eines Makros ändern kann, damit es einen bestimmten Zellbereich abdeckt.

Es gibt verschiedene Möglichkeiten, wie Sie sich dieser Aufgabe nähern können. Eine besteht darin, im Makro genau anzugeben, welche Zellen Sie mit dem Textfeld abdecken möchten, und dann die Eigenschaften des Textfelds an die Eigenschaften der von Ihnen angegebenen Zellen anzupassen.

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

Um das Makro zu verwenden, ändern Sie die Adresse der Zellen, die Sie oben links und unten rechts im Textfeld verwenden möchten. Wählen Sie dann das Textfeld aus und führen Sie das Makro aus.

Wenn Sie möchten, können Sie einen benannten Bereich verwenden, um den Bereich anzugeben, der vom Textfeld abgedeckt werden soll. Das folgende Makro erwartet, dass der Bereich RangeToCover heißt. Wenn Sie das Textfeld auswählen und das Makro ausführen, wird die Größe des Textfelds an die Größe des Bereichs angepasst.

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

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (10185) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: