Điền các ô trong bảng bằng Macro (Microsoft Word)
Khi bạn đang làm việc với các bảng trong Word, bạn có thể muốn điền vào các ô khác nhau trong bảng bằng một giá trị đã đặt. Ví dụ: bạn có thể muốn sao chép thứ gì đó vào Clipboard, rồi dán nội dung của Clipboard vào từng ô trong bảng. Macro sau sẽ thực hiện thủ thuật:
Sub PasteToCells() Dim TargetRange As Range Dim oTargCell As Cell If Selection.Cells.Count = 0 Then 'Quit if no cells in selection MsgBox "No cells selected", vbCritical Exit Sub End If On Error Resume Next Set TargetRange = Selection.Range For Each oTargCell In Selection.Cells oTargCell.Range.Paste Next oTargCell TargetRange.Select End Sub
Macro bắt đầu bằng cách kiểm tra để đảm bảo rằng vùng chọn bao gồm một số ô. Nếu không, thì người dùng được thông báo và kết thúc macro.
Sau đó, lựa chọn được lưu trữ trong một biến để nó có thể được chọn (lại) ở cuối macro. Nếu không có mã này, macro sẽ để lại điểm chèn được thu gọn trong ô đầu tiên của vùng chọn ban đầu.
Phần thịt thực sự của macro nằm trong vòng lặp For … Next. Nó bước qua các ô trong vùng chọn và thay thế bất cứ thứ gì có ở đó bằng nội dung của Clipboard. Cuối cùng, lựa chọn ban đầu lại được chọn và macro kết thúc.
Bạn có thể nhận thấy rằng có một câu lệnh On Error trong macro. Câu lệnh này về cơ bản yêu cầu Word bỏ qua bất kỳ lỗi nào và tiếp tục với câu lệnh tiếp theo. Các lỗi có thể được kích hoạt bao gồm chạy macro mà không có gì trong Bảng tạm hoặc cố gắng dán bảng trong một ô bảng. Word sẽ không thực hiện một trong hai tác vụ, nhưng nó sẽ tiếp tục cố gắng cho đến khi hoàn thành với tất cả các ô trong vùng chọn.
Bạn nên lưu ý rằng macro này thay thế bất cứ thứ gì có trong các ô đã chọn bằng nội dung của Bảng tạm; bất cứ thứ gì trước đây trong các ô sẽ bị mất. Thay vào đó, nếu bạn muốn thêm thông tin vào đầu ô mà không làm ảnh hưởng đến nội dung hiện có của ô, bạn có thể sử dụng macro được sửa đổi một chút này:
Sub PasteToCellsStart() Dim TargetRange As Range Dim oTargCell As Cell Dim PasteRange As Range If Selection.Cells.Count = 0 Then 'Quit if no cells in selection MsgBox "No cells selected", vbCritical Exit Sub End If On Error Resume Next Set TargetRange = Selection.Range For Each oTargCell In Selection.Cells Set PasteRange = oTargCell.Range PasteRange.Collapse wdCollapseStart PasteRange.Paste Next oTargCell TargetRange.Select End Sub
Một sửa đổi cuối cùng sẽ là đưa ra một macro có thể dán vào cuối những gì có trong ô. Bạn có thể nghĩ rằng bạn có thể thay thế wdCollapseStart bằng wdCollapseEnd trong macro nói trên, nhưng điều đó không hoạt động đúng trong các bảng. Thay vào đó, bạn phải thay thế vòng lặp For … Next trong macro trên. Ví dụ sau đây cho thấy một phiên bản macro đã thay đổi.
Sub PasteToCellsEnd() Dim TargetRange As Range Dim oTargCell As Cell Dim PasteRange As Range If Selection.Cells.Count = 0 Then 'Quit if no cells in selection MsgBox "No cells selected", vbCritical Exit Sub End If On Error Resume Next Set TargetRange = Selection.Range For Each oTargCell In Selection.Cells Set PasteRange = oTargCell.Range.Characters.Last PasteRange.Collapse wdCollapseStart PasteRange.Paste Next oTargCell TargetRange.Select 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 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 (1508) áp dụng cho Microsoft Word 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 Word (Word 2007 và sau này) tại đây: