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à macro kết thúc.

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 (13157) áp dụng cho Microsoft Word 2007, 2010, 2013, 2016, 2019 và Word trong Office 365. 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 Word tại đây: