Kiểm tra dấu ngoặc kép bị thiếu (Microsoft Word)
David là một nhà văn và anh ấy sử dụng rất nhiều công cụ kiểm tra chính tả, văn phong và ngữ pháp của Word. Đôi khi anh ấy thấy rằng các đề xuất của Word, để sửa ngữ pháp, là không tốt và anh ấy đã học cách bỏ qua chúng. Một điều mà anh ấy gặp khó khăn là việc sử dụng dấu ngoặc kép xung quanh cuộc đối thoại.
Word không nhận ra David đã bỏ dấu ngoặc kép ở cuối hay đầu câu. Anh ấy nhớ cách đây nhiều năm đã sử dụng một chương trình xử lý văn bản để lại dấu ngoặc kép màu xanh lá cây trên tài liệu của bạn để chỉ ra dấu ngoặc kép bị thiếu. Anh ấy tự hỏi liệu Word có thể được tạo ra để nhận ra dấu ngoặc kép bị thiếu không.
Không có cách nào để làm điều này nguyên bản trong Word. Lý do có lẽ là do gần như không thể xác định được vị trí của một trích dẫn nên bắt đầu và kết thúc. Ví dụ: nếu bạn có một đoạn văn có bốn câu và bạn đặt một dấu ngoặc kép ở đâu đó trong đoạn văn đó, làm cách nào để Word xác định xem dấu đó chỉ định phần đầu hay phần cuối của một câu trích dẫn? Nếu là phần mở đầu, làm thế nào Word biết được dấu kết thúc nên ở cuối câu, cuối câu thứ hai hay cuối đoạn văn? (Câu hỏi hóc búa tương tự cũng xảy ra nếu câu trích dẫn là phần trích dẫn kết thúc, nhưng sự bối rối về vị trí kéo dài sang trái thay vì phải.)
Kết hợp sự nhầm lẫn tiềm ẩn này với thực tế là dấu trích dẫn đóng có thể thậm chí không có trong đoạn hiện tại — nó có thể nằm ở cuối đoạn sau khi hộp thoại được đánh dấu thực sự kết thúc.
Tuy nhiên, bạn có thể phát triển một macro có thể thực hiện ít nhất một số kiểm tra sơ cấp cho bạn. Macro sau chuyển đến đầu tài liệu và tìm kiếm dấu ngoặc kép đầu tiên. Sau đó, nó kiểm tra mọi thứ từ nhân vật đó đến cuối đoạn văn. Nếu bạn đang sử dụng dấu ngoặc kép không thông minh, về cơ bản nó sẽ kiểm tra xem có số lượng dấu ngoặc kép chẵn hay không. Nếu bạn đang sử dụng dấu ngoặc kép thông minh, thì nó sẽ kiểm tra xem có câu trích dẫn kết thúc cho mỗi câu trích dẫn bắt đầu hay không. Nếu một trong hai điều kiện được phát hiện là sai, thì văn bản sẽ được đánh dấu.
Sub MarkUnevenQuotes() Dim sRaw As String Dim iNorm As Integer Dim iSmart As Integer Dim J As Long Selection.HomeKey Unit:=wdStory Application.ScreenUpdating = False Selection.Find.ClearFormatting With Selection.Find .Text = """" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute While Selection.Find.Found Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend sRaw = Selection.Text iNorm = 0 iSmart = 0 For J = 1 To Len(sRaw) If Mid(sRaw, J, 1) = Chr(34) Then If iNorm > 0 Then iNorm = iNorm - 1 Else iNorm = iNorm + 1 End If End If If Mid(sRaw, J, 1) = Chr(147) Then iSmart = iSmart + 1 End If If Mid(sRaw, J, 1) = Chr(148) Then iSmart = iSmart - 1 End If Next J If iNorm > 0 Or iSmart > 0 Then Selection.Range.HighlightColorIndex = wdYellow End If Selection.Collapse Direction:=wdCollapseEnd Selection.Find.Execute Wend Selection.HomeKey Unit:=wdStory Application.ScreenUpdating = True End Sub
Khi macro hoàn tất, những gì bạn nhận được là một loạt các lựa chọn văn bản được đánh dấu nếu chúng cần được kiểm tra trực quan. Tuy nhiên, macro sẽ không tìm thấy dấu ngoặc kép nằm ngoài đoạn văn mà dấu ngoặc kép đầu tiên xuất hiện.
_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 các trang WordTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
WordTips là nguồn của bạn để đào tạo Microsoft Word hiệu quả về chi phí.
(Microsoft Word là phần mềm xử lý văn bản phổ biến nhất trên thế giới.) Mẹo này (13293) áp dụng cho Microsoft Word 2007, 2010, 2013, 2016 và Word trong Office 365.