Ändern der Größe eines Textfelds in einem Makro (Microsoft Excel)
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 (3143) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: