マクロ内のテキストボックスのサイズ変更(Microsoft Excel)
Robのワークシートには、Wordからコピーしたテキストを含むテキストボックスがあります。
彼は、マクロを使用してテキストボックスのサイズを変更し、特定の範囲のセルをカバーする方法を知りたいと考えています。
このタスクに取り組むには、いくつかの方法があります。 1つは、マクロで、テキストボックスでカバーするセルを正確に指定し、指定したセルの特性に一致するようにテキストボックスのプロパティを調整することです。
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_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3143)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link:/ excelribbon-Resizing_a_Text_Box_in_a_Macro [マクロ内のテキストボックスのサイズ変更]
。