![]() |
|
|||||||
|
|
|
Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
Hello,
the following code in VBA should move a selected text, from one cell to the adjacent cell to its right, after selecting the ENTER key. I tried it, but it doesn't work. Am I wrong or missing something? I don't have to move the contents of a cell, just what is selected in a cell. Example: in a table cell, I have this sentence: Check inserted files. I would like that, by selecting inserted files and pressing the ENTER key, the two selected words were moved to the adjacent cell on the right. To run the code, I insert this into the VB page with the Develop menu (ALT+F11). Here is the code: Sub MoveTextInTable() Dim oTable As Table Dim oCell as cell Dim oSelection as a selection Set oSelection = Application.Selection If oSelection.Information(wdWithInTable) = True then Set oTable = oSelection.Tables(1) Set oCell = oSelection.Cells(1) If not oCell.Next is nothing then ' Check if next cell exists oCell.Range.Cut oCell.Next.Range.InsertBefore Selection.Text Else MsgBox "Cannot move text to the right, as there is no adjacent cell." End If Else MsgBox "Select a cell within a table." End If End sub Carlo - Italy |
|
#2
|
||||
|
||||
|
You appear to have made up some of your own syntax and in any case it would not work when you press the enter key. It is not clear whether you want some or all of the text moved. The following will facilitate both. Note the Cell.Next command will move to the next row if the selected cell is the last in the row, so the code checks to see if the cell is the last in the row, so that Next only works in the same row.
Code:
Sub MoveSomeTextInCell()
'Moves selected text within a cell
Dim oTable As Table
Dim oCell As Cell
Dim oRng As Range
If Selection.Information(wdWithInTable) = True Then
If Len(Selection.Range) = 0 Then
MsgBox "Nothing selected", vbCritical
Exit Sub
End If
Set oRng = Selection.Range
Set oTable = oRng.Tables(1)
Set oCell = oRng.Cells(1)
If oCell.RowIndex = oCell.Next.RowIndex Then ' Check if next cell exists
oCell.Next.Range.InsertBefore oRng.Text
oRng.Text = ""
Else
MsgBox "Cannot move text to the right, as there is no adjacent cell.", vbCritical
End If
Else
MsgBox "Select a cell within a table.", vbCritical
End If
End Sub
Sub MoveAllTextInCell()
'moves all of selected cell contents
Dim oTable As Table
Dim oCell As Cell
Dim oRng As Range
If Selection.Information(wdWithInTable) = True Then
Set oTable = Selection.Tables(1)
Set oCell = Selection.Cells(1)
Set oRng = oCell.Range
oRng.End = oRng.End - 1
If oCell.RowIndex = oCell.Next.RowIndex Then
oCell.Next.Range.InsertBefore oRng.Text
oRng.Text = ""
Else
MsgBox "Cannot move text to the right, as there is no adjacent cell.", vbCritical
End If
Else
MsgBox "Select a cell within a table.", vbCritical
End If
End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
How can I select all the text in a table cell when it contains multiple paragraphs?
|
wrdy | Word | 4 | 05-18-2022 12:25 AM |
find and replace a number that's always in a table and always adjacent to a cell with known text
|
mbcohn | Word VBA | 35 | 04-13-2021 11:40 AM |
| extract time from a cell and move it to front of cell before text | ewso | Excel | 20 | 03-19-2017 11:34 AM |
VBA code to select one word from a text in a cell and place that word in next cell
|
Shinaj | Excel | 2 | 05-01-2014 01:50 PM |
| Auto-populate an MS Word table cell with text from a diff cell? | dreamrthts | Word Tables | 0 | 03-20-2009 01:49 PM |