Rob có một hộp văn bản, trong một trang tính, chứa văn bản được sao chép từ Word.

Anh ấy muốn biết làm thế nào anh ấy có thể thay đổi kích thước hộp văn bản bằng cách sử dụng macro, để nó bao phủ một phạm vi ô cụ thể.

Có một số cách bạn có thể tiếp cận nhiệm vụ này. Một là chỉ định, trong macro, chính xác những ô bạn muốn bao phủ bằng hộp văn bản, sau đó điều chỉnh các thuộc tính của hộp văn bản để phù hợp với đặc điểm của các ô bạn chỉ định.

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

Để sử dụng macro, hãy thay đổi địa chỉ của các ô bạn muốn sử dụng cho phía trên bên trái và dưới cùng bên phải của hộp văn bản. Sau đó, chọn hộp văn bản và chạy macro.

Nếu muốn, bạn có thể sử dụng một dải ô đã đặt tên để chỉ định dải ô được bao phủ bởi hộp văn bản. Macro sau dự kiến ​​rằng phạm vi sẽ được đặt tên là RangeToCover. Khi bạn chọn hộp văn bản và chạy macro, hộp văn bản sẽ được thay đổi kích thước để phù hợp với kích thước của phạm vi.

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

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (3143) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: