Thay đổi văn bản trong hộp văn bản trên biểu đồ (Microsoft Excel)
Don có nhiều biểu đồ trong một sổ làm việc. Mỗi biểu đồ chứa hai hộp văn bản với ngày của dữ liệu hiện tại và ngày biểu đồ được cập nhật. Don muốn thay đổi tất cả văn bản trong các hộp văn bản biểu đồ này bằng macro nhưng không biết kỹ thuật thích hợp để thực hiện tác vụ.
Tất nhiên, điều này có thể được thực hiện với macro, nhưng bạn nên hiểu rằng có một cách để làm điều đó mà không cần macro. Bạn có thể, nếu muốn, gắn những gì được hiển thị trong hộp văn bản với nội dung của ô. Điều này có nghĩa là bạn có thể làm cho mỗi hộp văn bản của mình “động” để tất cả những gì bạn cần làm là thay đổi những gì có trong ô được liên kết. Ô đó có thể chứa giá trị văn bản, giá trị số, ngày tháng hoặc công thức — điều đó không thực sự quan trọng.
Đây là cách để đạt được kỹ thuật này: Chọn hộp văn bản bạn muốn liên kết với một ô bằng cách nhấp vào ô đó một lần. Các tay cầm quen thuộc sẽ xuất hiện xung quanh bên ngoài hộp văn bản. Sau đó, trong thanh Công thức, hãy nhập một tham chiếu ô. Bạn có thể làm điều này bằng cách nhập nó như sau:
=$C$15
Điều này liên kết nội dung của hộp văn bản với bất kỳ nội dung nào trong ô C15. Nếu muốn, bạn cũng có thể xóa bất cứ thứ gì có trong thanh Công thức và khi thanh Công thức đang hoạt động, hãy bấm vào ô bạn muốn liên kết. Địa chỉ của ô sẽ xuất hiện trong thanh Công thức. Nhấn Enter và nhiệm vụ đã hoàn tất.
Bây giờ, hãy nhập một cái gì đó vào ô liên quan. Bất cứ điều gì bạn nhập sẽ xuất hiện ngay lập tức trong hộp văn bản.
Trước khi cung cấp một số câu trả lời tiềm năng liên quan đến macro, bạn sẽ cần một chút kiến thức cơ bản về mô hình đối tượng của Excel, có thể truy cập được thông qua VBA.
Có hai loại biểu đồ có thể chứa trong sổ làm việc: trang tính biểu đồ và biểu đồ nhúng. Các trang biểu đồ được đại diện bởi một đối tượng Biểu đồ và thuộc bộ sưu tập Biểu đồ. Mặt khác, biểu đồ nhúng được biểu thị bằng một đối tượng Biểu đồ thuộc bộ sưu tập ChartObjects, đến lượt nó, thuộc về một đối tượng trang tính.
Nếu bạn đặt một hộp văn bản trên một trang biểu đồ thực tế, thì nó có thể được truy cập theo cách sau:
Sub FindTextBoxes1() Dim c As Chart Dim s As Shape Dim sMsg As String Dim sName As String For Each c In ActiveWorkbook.Charts For Each s In c.Shapes If s.Type = msoTextBox Then sMsg = s.TextFrame2.TextRange.Text sName = s.Name MsgBox "Text: " & sMsg, vbOKOnly, sName End If Next s Next c End Sub
Macro này đi qua từng trang biểu đồ và sau đó qua từng hộp văn bản trên mỗi trang biểu đồ. Nội dung trong mỗi hộp văn bản sẽ được hiển thị trong hộp thông báo. Nếu bạn muốn thay đổi những gì được chứa trong hộp thông báo, tất cả những gì bạn cần làm là đặt thuộc tính Văn bản của đối tượng TextRange.
Các hộp văn bản trên biểu đồ được nhúng là một câu chuyện khác. Tại sao? Vì có thể hộp văn bản không thực sự là một phần của biểu đồ, nhưng là một phần của trang tính. Nói cách khác, “cha” của hộp văn bản có thể là biểu đồ được nhúng hoặc có thể là trang tính.
Một cách tốt để tìm hiểu xem hộp văn bản có phải là một phần của biểu đồ được nhúng hay không là tạo một macro tương tự với macro vừa được trình bày. Tuy nhiên, cái này có thể lướt qua từng biểu đồ được nhúng trong mỗi trang tính và tìm từng hình dạng (hộp văn bản) trong biểu đồ đó.
Sub FindTextBoxes2() Dim w As Worksheet Dim c As ChartObject Dim s As Shape Dim sMsg As String Dim sName As String For Each w In ActiveWorkbook.Worksheets For Each c In w.ChartObjects For Each s In c.Chart.Shapes If s.Type = msoTextBox Then sMsg = "This text box is a child of the " sMsg = sMsg & "embedded chart" & vbCrLf sMsg = sMsg & "Text: " & s.TextFrame2.TextRange.Text sName = s.Name MsgBox sMsg, vbOKOnly, sName End If Next s Next c For Each s In w.Shapes If s.Type = msoTextBox Then sMsg = "This text box is a child of the " sMsg = sMsg & "worksheet" & vbCrLf sMsg = sMsg & "Text: " & s.TextFrame2.TextRange.Text sName = s.Name MsgBox sMsg, vbOKOnly, sName End If Next s Next w End Sub
Khi bạn chạy macro, bạn sẽ thấy một hộp thông báo cho mỗi hộp văn bản thực sự là con của các biểu đồ được nhúng. Sau đó, bạn sẽ thấy một hộp thông báo cho bất kỳ hộp văn bản nào là con của trang tính. Như trong macro trước, macro này sẽ kiểm tra để đảm bảo rằng đối tượng Shape thực sự là một hộp văn bản trước khi hiển thị bất kỳ thông tin nào về nó. Điều này đặc biệt quan trọng khi xem qua từng hình dạng trong trang tính, vì bất kỳ biểu đồ nhúng nào trên trang tính cũng được coi là một phần của bộ sưu tập Hình dạng.
Như trước đó, để thay đổi văn bản có trong hộp văn bản, tất cả những gì bạn cần làm là thay đổi thuộc tính Văn bản của đối tượng TextRange.
_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 (13377) áp dụng cho Microsoft Excel 2007, 2010 và 2013.