How to get the current Table Index value in my VBA Macro?

V

vrk1

Hi,

I have a macro that splits the cells that have Hard returns inside all the
tables in my current document into separate rows. Someone sent me this macro
below to perform this function.

If I need this macro to operate only on the current Cell where my cursor is
and not all the tables in my document, how should I modify this?


Macro Below:

Sub RowSplit()

For x = 1 To ThisDocument.Tables.Count

For Each r In ThisDocument.Tables(x).Rows

If InStr(1, r, Chr(13)) < Len(r.Cells(1).Range) Then

rowsArray = Split(r.Cells(1).Range, Chr(13))
nSubRowCount = UBound(rowsArray)

If nSubRowCount > 1 Then
r.Select

For i = nSubRowCount To 1 Step -1
If Len(Replace(rowsArray(i), Chr(7), "")) > 0 Then
Selection.InsertRowsBelow
ThisDocument.Tables(x).Cell(r.Index + 1,
1).Range = rowsArray(i)
r.Select
End If
Next
Selection.Range = rowsArray(0)
End If

End If

Next
Next

End Sub
 
P

Peter A

vrk1 said:
Hi,

I have a macro that splits the cells that have Hard returns inside all the
tables in my current document into separate rows. Someone sent me this macro
below to perform this function.

If I need this macro to operate only on the current Cell where my cursor is
and not all the tables in my document, how should I modify this?

<snipped>

You should ask this question on one of the VBA groups.
 
D

Doug Robbins - Word MVP

Replace

For x = 1 To ThisDocument.Tables.Count

For Each r In ThisDocument.Tables(x).Rows

With

For Each r In Selection.Tables(1).Rows

and delete the final Next

--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP
 
V

vrk1

My apologies. I will try to move this to the Word programming area, if I can.

Just to follow through on your response, when I tried what you suggested I
get an error message:

"The requested member of the collection does not exist."

Any ideas? Thank you.
 
D

Doug Robbins - Word MVP

You probably did not have the selection in a table when you ran it.

Enclose the routine in

If Selection.Information(wdWithInTable) = True Then
'code for routine here
End If

so that the code will only run if the selection is in a table.
--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top