Word.Tips.Net Welcome toWord.Tips.Net

Helpful Links

Tips.Net Home
WordTips Home

Ask a Word Question
Make a Comment

Tips.Net Store

WordTips FAQ
WordTips Premium

Learn Access Now
Free Printable Forms

Beauty Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Legal Tips
Money Tips
Organizing Tips
Pest Tips
Pet Tips
Wedding Tips
Word2007 Tips
WordTips

Advertise on the
WordTips Site

Newest Tips

Setting Fraction Bar Overhang Spacing in the Equation Editor

Printing On Both Sides of the Paper

Turning Off AutoComplete for Dates

Ordering Search and Replace

Understanding Auto Line Spacing

Adding Comments to Your Document

Conditional Calculations in Word

 

Filling Table Cells with a Macro

Summary: Want to stuff a value into each cell of a table? You can either type the value over and over and over again, or you can use the short macros described in this tip. (This tip works with Microsoft Word 97, Word 2000, Word 2002, Word 2003, and Word 2007.)

As you are working with tables in Word, you may want to fill the various cells in a table with a set value. For instance, you might want to copy something to the Clipboard, and then paste the contents of the Clipboard to each cell in a table. The following macro will do the trick:

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

The macro starts by checking to make sure that the selection includes some cells. If not, then the user is informed and the macro is ended. Then the selection is stored in a variable so that it can be selected (again) at the end of the macro. Without this code, the macro would leave the insertion point collapsed in the first cell of the original selection.

The real meat of the macro is in the For ... Next loop. It steps through the cells in the selection and replaces whatever is there with the contents of the Clipboard. Finally, the original selection is again selected, and the macro ends.

You probably noticed that there is an On Error statement in the macro, as well. This statement basically tells Word to ignore any errors and continue with the next statement. Errors that could be triggered include running the macro with nothing in the Clipboard or trying to paste a table within a table cell. Word won't do either task, but it will continue trying until it is done with all the cells in the selection.

You should note that this macro replaces whatever is in the selected cells with the contents of the Clipboard; whatever was previously in the cells is lost. If you want to instead add information to the beginning of the cells, without disturbing the existing contents of the cell, you could use this slightly modified macro:

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

One last modification would be to come up with a macro that would paste to the end of what is in the cells. You might think that you could replace wdCollapseStart with wdCollapseEnd in the foregoing macro, but that doesn't work properly within tables. Instead, you must replace the For ... Next loop in the above macro. The following example shows a changed version of the macro.

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

Tip #1508 applies to Microsoft Word versions: 97 | 2000 | 2002 | 2003 | 2007

Great Idea! Word is a tool to get what you really want—printed output. This means you need to make sure that Word works as well as possible with your printer, whether it is sitting on your desk or in a room down the hall.
 
Check out WordTips: Printing and Printers today!