Solved

Help declaring a table cell's row and column position in Word

Posted on 2010-08-12
7
656 Views
Last Modified: 2012-05-10
Hi experts

I want to goto a bookmark in my document called "Total" Fee which is in a table. Then I want to return the position of the cell, ie it's row and column numbers. There are several tables in my document.

I'm been looking around trying to work out how to do it. I've managed to return the table number. I thought I was setting the row and column position in my code, but I keep getting an error when I try to go to that cell.

Once I've declared the row position I want to do a calculation. I think I'll be able to do that when I declare the row correctly.

Can someone please help me declare the cell row and column position because I give up!



Sub SettheTotalCells()





    Dim oTbl As Table

    Dim rw As Row

    Dim cl As Cell

    Dim Col As Column

    Dim J As Integer

    Dim iTableNum As Integer

   

 

    For J = 1 To ActiveDocument.Tables.Count

        Set oTbl = ActiveDocument.Tables(J)

        oTbl.Select

        If Selection.Bookmarks.Exists("TotalFee") Then

            iTableNum = J

            Exit For

        End If

    Next J

    

    Set oTbl = ActiveDocument.Tables(J)

    

    ActiveDocument.Bookmarks("TotalFee").Range.Select

    Set cl = Selection.Cells(1)

    cl.Select

    

    '  DECLARE ROW AND COLUMN NUMBERS

    

    Set rw = oTbl.Rows(cl.RowIndex)

    Set Col = oTbl.Columns(cl.ColumnIndex)

    



    



     ActiveDocument.Tables(J).Cell(Row:=4, Column:=4).Range.Select 'this works

     ActiveDocument.Tables(J).Cell(rw, Col).Range.Select 'this doesn't work

     oTbl.Cell(rw, Col).Range.Select 'this doesn't work





    Selection.InsertFormula Formula:="=d4+d5", NumberFormat:="#,##0.00;(#,##0.00)"



End Sub

Open in new window

0
Comment
Question by:Fi69
  • 4
  • 2
7 Comments
 
LVL 11

Assisted Solution

by:JoeNuvo
JoeNuvo earned 75 total points
Comment Utility
Try change following thing

Dim rw As Integer
.
Dim Col As Integer
.
.
.
'     DECLARE ROW AND COLUMN NUMBERS

rw = cl.RowIndex
Col = cl.ColumnIndex
.
.
.
0
 
LVL 76

Accepted Solution

by:
GrahamSkan earned 175 total points
Comment Utility
Your immediate problem is that you are trying to use the row and column objects.

You need to do:

    Dim r As Integer
    Dim c As Integer
 
Then

    r = cl.RowIndex
    c = cl.ColumnIndex

And

ActiveDocument.Tables(J).Cell(r, C).Range.Select
0
 
LVL 76

Expert Comment

by:GrahamSkan
Comment Utility
However, you can do it in one line:
Sub SettheTotalCells()

  ActiveDocument.Fields.Add ActiveDocument.Bookmarks("TotalFee").Range, wdFieldEmpty, "=SUM(D4, D5) \# ""#.##0,00;(#.##0,00)"""

End Sub

Open in new window

0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:Fi69
Comment Utility
Hi Joe and Graham

Thanks for the clarification on the correct declaration of the variable.  That did the trick!

Graham, I tried your code to insert the formula in one line but it errored for some reason.


0
 
LVL 76

Expert Comment

by:GrahamSkan
Comment Utility
It worked in my test. What was the error message?
0
 

Author Comment

by:Fi69
Comment Utility
Hi Graham

It is a run-time error no. 4605. The command is not available. Would that have something to do with what is bookmarked? I selected the whole cell and inserted my bookmark rather than selecting the formula/field and applying the bookmark. I've just found that is more stable (less easily deleted). The formula is sitting in that cell.
0
 
LVL 76

Assisted Solution

by:GrahamSkan
GrahamSkan earned 175 total points
Comment Utility
Yes that would be a problem. The field would replace the contents of the bookmark. If the whole cell is bookmarked, the cell delimiter is also included, which cannot be replaced.

Try this instead.




Sub SettheTotalCells()

    Dim rng As Range

    

    Set rng = ActiveDocument.Bookmarks("TotalFee").Range

    rng.Collapse wdCollapseStart

    ActiveDocument.Fields.Add rng, wdFieldEmpty, "=SUM(D4, D5) \# ""#.##0,00;(#.##0,00)""", False

End Sub

Open in new window

0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Suggested Solutions

Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
The viewer will learn how to make their project stand out over others by learning how to change colors and shapes, add spaces, change directions, and add bullets to their charts.
This video shows where to find the word count, how to display it, and what it breaks down to in Microsoft Word.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now