Please Note: This article is written for users of the following Microsoft Word versions: 2007, 2010, 2013, 2016, 2019, and Word in Microsoft 365. If you are using an earlier version (Word 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Word, click here: Setting Consistent Column Widths in Multiple Tables.
Written by Allen Wyatt (last updated September 8, 2023)
This tip applies to Word 2007, 2010, 2013, 2016, 2019, and Word in Microsoft 365
Sheryl routinely creates documents that have many, many tables in them. Each of the tables is consistent in that they have the same general layout. (Each contains the same number of columns with each column containing the same type of information.) Sheryl is looking for a way to make sure that the widths of the columns in all the tables are consistent.
The solution depends on when you need to create the tables. If the document is a new one, then creating the tables in a consistent manner is rather easy. As has been described in other WordTips (and which I won't go into here), you can save your standard tables as Building Block entries or create a table style that defines how you want your table to appear. When needed, you simply insert the Building Block entry or apply the style, and the table appears as you desire.
The solution is a bit more involved if your document is already created and you simply want to apply consistency to the tables that exist within the document. In that case, the solution is to use a macro to change the widths of columns.
It is possible to create a macro that will quickly step through each table in a document and make each column in the table the same width, in this manner:
Sub SetColumnWidths1() Dim t As Table For Each t In ActiveDocument.Tables t.Columns.Width = InchesToPoints(2) Next t End Sub
Chances are good, however, that you don't want each column to be 2 inches wide. You probably want each column to be a specific width, different from the other columns. The following iteration of the macro handles that likelihood:
Sub SetColumnWidths2() Dim t As Table For Each t In ActiveDocument.Tables t.Columns(1).Width = InchesToPoints(2) t.Columns(2).Width = InchesToPoints(2.5) t.Columns(3).Width = InchesToPoints(3) Next t End Sub
The drawback to such a macro is that you need to specify, in the coding, the width of each column. Also, if you have an anomalous table in your document (it doesn't have the same number of columns as all your other tables), then the macro blithely tries to set the width of the columns.
A better approach, then, may be to have a "model" table in your document and then set all your other tables so that they use the same column widths as that table. An easy approach is to manually format the column widths of the first table in the document, then have the macro examine that table and use it as the pattern for the rest of the table columns.
Sub SetColumnWidths3() Dim t As Table Dim c As Column Dim ccnt As Integer Dim w() As Single Dim J As Integer Dim K As Integer Set t = ActiveDocument.Tables(1) ccnt = t.Columns.Count ReDim w(ccnt) J = 0 For Each c In t.Columns J = J + 1 w(J) = c.Width Next c For J = 2 To ActiveDocument.Tables.Count Set t = ActiveDocument.Tables(J) If t.Columns.Count = ccnt Then For K = 1 to ccnt t.Columns(K).Width = w(K) Next K Endif Next J End Sub
This macro examines the number of columns in the first table (assigning the value to the ccnt variable) and then looks at the width of each of those columns (assigning the values to the w array). It then steps through the rest of the tables in the document, and if the number of columns in the table matches the number in the ccnt variable, it sets the width of each column to the widths stored in the w array. The result is that each table in the document (well, at least those that have the same number of columns as the first table) has the same column widths.
There is one potential gotcha here: If the tables in your document use merged cells in any way, it could mess up the results you get. In that instance, you'll want to save your document before running the macro. That way you can check the results, visually, and then revert to the saved document, if necessary.
Note:
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (11693) applies to Microsoft Word 2007, 2010, 2013, 2016, 2019, and Word in Microsoft 365. You can find a version of this tip for the older menu interface of Word here: Setting Consistent Column Widths in Multiple Tables.
Comprehensive VBA Guide Visual Basic for Applications (VBA) is the language used for writing macros in all Office programs. This complete guide shows both professionals and novices how to master VBA in order to customize the entire Office suite for their needs. Check out Mastering VBA for Office 2010 today!
If you make structural changes to your table by adding new columns here and there, you could easily end up with a table ...
Discover MoreDo you use columns in your document layout? You may want to modify the widths of various columns, and Word makes the ...
Discover MoreWant to move a row in a table very easily? You can do so by using the same editing techniques you are already using.
Discover MoreFREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
There are currently no comments for this tip. (Be the first to leave your comment—just use the simple form above!)
Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.
Visit the WordTips channel on YouTube
FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2024 Sharon Parq Associates, Inc.
Comments