Consulting

Results 1 to 9 of 9

Thread: Code to insert new row with content control including drop downs

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Code to insert new row with content control including drop downs

    I have word 2010.
    I am creating a form and need the form to automatically insert a new row that has the same contents as the row before. The rows include form fields as well as drop down boxes. The code I am currently using says it will do this, but it only adds a new row, which is blank. I am thinking it isn't for drop down boxes? I appreciate any help!
    It is table 2, and has 12 columns and 9 rows
    Here is the code I am using:
    Sub AddRow()
    'Run on exit from the last form field in
    'the last row of the table
    Dim oTable As Table
    Dim oRng As Range
    Dim oNewRow As Range
    Dim oCell As Range
    Dim oLastCell As Range
    Dim sResult As String
    Dim iRow As Long
    Dim iCol As Long
    Dim CurRow As Long
    Dim i As Long
    Dim sPassword As String
    sPassword = "GRIN"
    'password to protect/unprotect form
    With ActiveDocument
    .Unprotect Password:=sPassword
    'Unprotect document
    Set oTable = Selection.Tables(2)
    'Select the appropriate table
    iCol = oTable.Columns.Count 'Record the last column number
    Set oLastCell = oTable.Cell(iRow, iCol).Range 'Record the last cell
    sResult = oLastCell.FormFields(1).Result 'Get the value in the last cell
    Set oRng = oTable.Rows.Last.Range
    'Add the last row to a range
    Set oNewRow = oTable.Rows.Last.Range 'Add the last row to another range
    oNewRow.Collapse wdCollapseEnd 'Collapse the second range to the end of the table
    oNewRow.FormattedText = oRng
    'insert the content of the last row into the new range
    'thereby adding a new row with the same content as the last row
    CurRow = oTable.Rows.Count 'Determine the new last row of the table
    For i = 1 To iCol 'Repeat for each column
    Set oCell = oTable.Cell(CurRow, i).Range 'process each cell in the row
    oCell.FormFields(1).Select 'Select the first field in the cell
    With Dialogs(wdDialogFormFieldOptions) 'and name it
    .Name = "Col12" & i & "Row9" & CurRow 'eg Col1Row2
    .Execute 'apply the changes
    End With
    Next i
    'Select the formfield in the last cell of the previous row
    oLastCell.FormFields(1).Select
    With Dialogs(wdDialogFormFieldOptions)
    .Exit = "" 'and remove the exit macro
    .Execute 'apply the changes
    'but note that this clears the value from the cell
    End With
    oLastCell.FormFields(1).Result = sResult 'so restore the result of the cell
    .Protect NoReset:=True, _
    Password:=sPassword, _
    Type:=wdAllowOnlyFormFields
    'Reprotect the form
    .FormFields("Col1Row" _
    & CurRow).Select 'and select the next field to be completed
    End With
    End Sub
    Last edited by saundrals; 06-24-2014 at 04:21 PM. Reason: Add code tags

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •