Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Programming / March 2005

Tip: Looking for answers? Try searching our database.

Merge Cells Method Problem

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
CodeDawg - 16 Mar 2005 00:09 GMT
Using Word 2000 on XP.

I would like to merge the top 4 rows of each column in a table that has 4+
rows.

Tried this:

Dim t1 as Table
Dim r1 as Range

For i = 1 To t1.Columns.Count
  Set r1 = t1.Cell(1, i).Range
  r1.End = t1.Cell(4, i).Range.End
  r1.Cells.Merge
'   r1.Select
'   With Selection
'       .Cells.Merge
'   End With
Next i

It throws an error: Requested Member of the Collection does not exist.

Is r1 not returning a cells collection? This scheme works when I am merging
cells along a row.

If I comment out r1.Cells.Merge statement and uncomment
the selection commands, the code works. Why does that work?

I do not like using selection objects.
So I ended up with the following code that works (using cell objects with
Merge method):

Dim t1 as Table
Dim c1 as Column

For i = 1 To 3
  For Each c1 In t1.Columns
     c1.Cells(1).Merge MergeTo:=c1.Cells(2)
  Next c1
Next

Anyone have any insight range issue?

Best regards and thank you.
Helmut Weber - 16 Mar 2005 11:56 GMT
Hi,

A range in a table is something linear.
From first cell to the right (!) to the
next row and so on until the last cell.

Example is a 4 column table:

Set t1 = ActiveDocument.Tables(1)
Set r1 = Selection.Range
r1.start = t1.Cell(1, 1).Range.start
r1.End = t1.Cell(4, 4).Range.End
MsgBox r1.Cells.count ' 16 !!!
r1.start = t1.Cell(1, 1).Range.start
r1.End = t1.Cell(4, 1).Range.End
MsgBox r1.Cells.count ' 13 !!!

Merging:

With t1.Columns
For i = 1 To .count
  .Item(i).Cells(1).Merge _
  MergeTo:=.Item(i).Cells(4)
Next

HTH

Greetings from Bavaria, Germany
Helmut Weber, MVP
"red.sys" & chr(64) & "t-online.de"
Word 2002, Windows 2000
CodeDawg - 16 Mar 2005 21:59 GMT
Helmut,

Thank you for your reply. I had realized that I was not understanding the
range object I had created, although
when I selected it, well, there is confusion there.

Furthermore, I did not realize the merge method when applied
to cell objects would permit more than one adjacent cell merges.
This I see from your example code.

So I ended up with this:

Dim t1 as Table
Dim c1 as Column

' merge top 4 header rows
For Each c1 In t1.Columns
  c1.Cells(1).Merge MergeTo:=c1.Cells(4)
Next c1

Thanks again for your explanation and your example.

Regards,

> Hi,
>
[quoted text clipped - 27 lines]
> "red.sys" & chr(64) & "t-online.de"
> Word 2002, Windows 2000
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.