Tìm văn bản trong hộp văn bản (Microsoft Excel)
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.TextFrame.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.TextFrame.Characters.Text) iPos = InStr(sTemp, sFind) If iPos > 0 Then With shp.TextFrame.Characters(Start:=iPos, _ Length:=Len(sFind)).Font .ColorIndex = 3 .Bold = True End With End If Next MsgBox "Finished" End Sub
Macro này đánh dấu văn bản được định vị bằng phông chữ màu đỏ, đậ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.TextFrame.Characters.Font .ColorIndex = 0 .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 (11281) á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: