Walter có một trang tính có một số hộp văn bản trong đó. Anh ấy muốn tìm kiếm trong các hộp văn bản đó để tìm một số văn bản cụ thể, nhưng Tìm và Thay thế dường như không có khả năng tìm thấy văn bản trong các hộp văn bản. Anh ấy tự hỏi liệu có cách nào để tìm kiếm qua các hộp văn bản không.

Walter đúng; bạn không thể tìm thấy văn bản nằm trong hộp văn bản trong Excel. Để kiểm tra điều này, chúng tôi đã mở một sổ làm việc hoàn toàn mới, đặt một cụm từ duy nhất vào đó (“tin nhắn của tôi”), sau đó đặt một số văn bản và số ngẫu nhiên vào các ô khác trong trang tính. Sau đó, với hộp văn bản không được chọn, Ctrl + F được nhấn để tìm kiếm “tin nhắn của tôi”. Excel đã thông báo một cách nghiêm túc rằng nó không thể tìm thấy văn bản, mặc dù nó vẫn ở ngay đó, trong hộp văn bản.

May mắn thay, bạn có thể tìm kiếm văn bản trong hộp văn bản bằng macro. Mỗi hộp văn bản trong trang tính thuộc bộ sưu tập Hình dạng, vì vậy tất cả những gì bạn cần làm là xem qua từng thành viên của bộ sưu tập và xem nó có chứa văn bản mong muốn hay không. Đây là một macro nhắc cho một chuỗi tìm kiếm và sau đó tìm kiếm nó trong các hộp văn bản.

Sub FindInShape1()

Dim rStart As Range     Dim shp As Shape     Dim sFind As String     Dim sTemp As String     Dim Response

sFind = InputBox("Search for?")

If Trim(sFind) = "" Then         MsgBox "Nothing entered"

Exit Sub     End If     Set rStart = ActiveCell     For Each shp In ActiveSheet.Shapes         sTemp = shp.TextFrame2.TextRange.Characters.Text         If InStr(LCase(sTemp), LCase(sFind)) <> 0 Then             shp.Select             Response = MsgBox( _               prompt:=shp.Name & vbCrLf & _               sTemp & vbCrLf & vbCrLf & _               "Do you want to continue?", _               Buttons:=vbYesNo, Title:="Continue?")

If Response <> vbYes Then                 Set rStart = Nothing                 Exit Sub             End If         End If     Next     MsgBox "No more found"

rStart.Select     Set rStart = Nothing End Sub

Macro này xem xét tất cả các hình dạng trong trang tính, không chỉ các hộp văn bản. Nếu bạn muốn giới hạn tìm kiếm của mình chỉ trong các hộp văn bản, bạn có thể chuyển qua bộ sưu tập TextBoxes thay vì bộ sưu tập Hình dạng; một trong hai cách sẽ hoạt động tốt.

Cũng lưu ý rằng cách tiếp cận này sẽ dừng lại mỗi khi nó tìm thấy văn bản phù hợp (trường hợp của văn bản không quan trọng) và hỏi bạn có muốn tiếp tục hay không. Thay vào đó, bạn có thể muốn một macro chỉ đơn giản là đánh dấu văn bản phù hợp trong các hộp văn bản. Điều này có thể được thực hiện với một macro ngắn hơn, như được hiển thị ở đây:

Sub FindInShape2()

Dim shp As Shape     Dim sFind As String     Dim sTemp As String     Dim iPos As Integer     Dim Response

sFind = InputBox("Search for?")

If Trim(sFind) = "" Then         MsgBox "Nothing entered"

Exit Sub     End If     sFind = LCase(sFind)

For Each shp In ActiveSheet.Shapes         sTemp = LCase(shp.TextFrame2.TextRange.Characters.Text)

iPos = InStr(sTemp, sFind)

If iPos > 0 Then             With shp.TextFrame2.TextRange.Characters(Start:=iPos, _               Length:=Len(sFind)).Font                 .UnderlineStyle = msoUnderlineHeavyLine                 .Bold = True             End With         End If     Next     MsgBox "Finished"

End Sub

Macro này gạch dưới văn bản được định vị bằng cách sử dụng một dòng đậm, và sau đó tô đậm. Khi bạn hoàn tất, có thể bạn muốn thay đổi văn bản trở lại văn bản thông thường. Bạn có thể làm như vậy bằng cách sử dụng macro sau:

Sub ResetFont()

Dim shp As Shape

For Each shp In ActiveSheet.Shapes         With shp.TextFrame2.TextRange.Characters.Font             .UnderlineStyle = msoNoUnderline             .Bold = False         End With     Next 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 (11282) áp dụng cho Microsoft Excel 2007 và 2010. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: